diff --git a/inc-criteres.php3 b/inc-criteres.php3
index 7cf0d38b3292026e885b259ccee6de5425df2893..fa11e7cce8052878a62d5db4ed8d8fd2e83f76fa 100644
--- a/inc-criteres.php3
+++ b/inc-criteres.php3
@@ -50,14 +50,22 @@ function critere_exclus_dist($idb, &$boucles, $crit) {
 
 // {doublons} ou {unique}
 // http://www.spip.net/@doublons
+// attention: boucle->doublons designe une variable qu'on affecte
 function critere_doublons_dist($idb, &$boucles, $crit) {
 	$boucle = &$boucles[$idb];
-	$boucle->doublons = "'" . $boucle->type_requete . "' . " .
-	  calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent);
 	$NOT_IN = $crit->not ? '' : 'NOT';
 	$boucle->where[] = '" .' .
-		"calcul_mysql_in('".$boucle->id_table . '.' . $boucle->primary."', "
-		.'"0".$doublons['.$boucle->doublons."], '$NOT_IN') . \"";
+	  "calcul_mysql_in('".$boucle->id_table . '.' . $boucle->primary .
+	  "', " .
+	  '"0".$doublons[' . 
+	  $boucle->doublons .
+	  " = ('" .
+	  $boucle->type_requete . 
+	  "' . " .
+	  calculer_liste($crit->param[0], array(), $boucles, $boucles[$idb]->id_parent) .
+	  ')], \'' . 
+	  $NOT_IN . 
+	  " ') . \"";
 }
 
 // {lang_select}
diff --git a/inc-html-squel.php3 b/inc-html-squel.php3
index 3d5a1cf374492083ea1ae37a437e06f3c46ccd3f..d017dc26852f6702503dfee3267d99c021d6d764 100644
--- a/inc-html-squel.php3
+++ b/inc-html-squel.php3
@@ -381,11 +381,11 @@ function phraser_criteres($params, &$result) {
 			else { 
 			  // pas d'emplacement statique, faut un dynamique
 			  /// mais il y a 2 cas qui ont les 2 !
-			  if (($param == 'unique') || ($param == 'doublons'))
+			  if (($param == 'unique') || (ereg('^!?doublons *', $param)))
 			    {
-			      // sera remplace ensuite par la bonne valeur
-			      // mais il faut l'indiquer tout de suite
-			      $result->doublons = true;
+			      // cette variable sera inseree dans le code
+			      // et son nom sert d'indicateur des maintenant
+			      $result->doublons = '$doublons_index';
 			      $param = 'doublons';
 			    }
 			  elseif ($param == 'recherche')
@@ -489,7 +489,6 @@ function phraser($texte, $id_parent, &$boucles, $nom, $ligne=1) {
 			$milieu = substr($result->apres,1);
 			$result->apres = "";
 			phraser_criteres($result->param, $result);
-
 		}
 		//
 		// Recuperer la partie conditionnelle avant