diff --git a/ecrire/public/criteres.php b/ecrire/public/criteres.php
index 851c77ee2cf26955314dfc0ccba7e4d5f12c6643..dfd271bbcfcbae98a0c419bd05899e8bc9ff1ddd 100644
--- a/ecrire/public/criteres.php
+++ b/ecrire/public/criteres.php
@@ -723,9 +723,13 @@ function calculer_critere_DEFAUT($idb, &$boucles, $crit)
 	// inserer la condition (cf {lang?})
 	// traiter a part la date, elle est mise d'office par SPIP,
 	if ($crit->cond) {
-		if (tester_param_date('articles', $col))
-		  $pred = '@$Pile["env"][\'' . $col ."']";
-		else $pred = calculer_argument_precedent($idb, $col, $boucles);
+		$pred = calculer_argument_precedent($idb, $col, $boucles);
+    if ($col == "date" OR $col == "date_redac") {
+      if($pred == "\$Pile[0]['".$col."']") {
+        $pred = "(\$Pile[0]['{$col}_default']?'':$pred)";
+      }
+    }
+		
 		if ($op == '=' AND !$crit->not)
 		  $where = array("'?'", "(is_array($pred))", 
 				 critere_IN_cas ($idb, $boucles, 'COND', $arg, $op, array($pred), $col), 
@@ -947,9 +951,12 @@ function calculer_critere_infixe_ops($idb, &$boucles, $crit)
 		$val = 'id_parent';
 	// un critere conditionnel sur date est traite a part
 	// car la date est mise d'office par SPIP, 
-	      if ($crit->cond AND tester_param_date('articles', $col))
-		  $val ='@$Pile["env"][\'' . $col ."']";
-	      else $val = calculer_argument_precedent($idb, $val, $boucles);
+	      $val = calculer_argument_precedent($idb, $val, $boucles);
+        if ($crit->cond AND ($col == "date" OR $col == "date_redac")) {
+		      if($val == "\$Pile[0]['".$col."']") {
+            $val = "(\$Pile[0]['{$col}_default']?'':$val)";
+          }
+		    }
 	      $val = array(kwote($val));
 	    }
 	  } else {
diff --git a/ecrire/public/parametrer.php b/ecrire/public/parametrer.php
index b65cad6670a842b1e30df678e58e0a131b202d4a..48c47945252f74c4b19f3986c39b56a6b32ff6aa 100644
--- a/ecrire/public/parametrer.php
+++ b/ecrire/public/parametrer.php
@@ -89,13 +89,15 @@ function public_parametrer_dist($fond, $contexte='', $cache='', $connect='')  {
 		// Rajouter d'office ces deux parametres
 		// (mais vaudrait mieux que le compilateur sache le simuler
 		// car ca interdit l'usage de criteres conditionnels dessus).
-		if (!isset($contexte['date']))
+		if (!isset($contexte['date'])) {
 			$contexte['date'] = date("Y-m-d H:i:s");
-		else $contexte['date'] = normaliser_date($contexte['date']);
+			$contexte['date_default'] = true;
+		} else $contexte['date'] = normaliser_date($contexte['date']);
 
-		if (!isset($contexte['date_redac']))
+		if (!isset($contexte['date_redac'])) {
 			$contexte['date_redac'] = date("Y-m-d H:i:s");
-		else $contexte['date_redac'] = normaliser_date($contexte['date_redac']);
+			$contexte['date_redac_default'] = true;
+		} else $contexte['date_redac'] = normaliser_date($contexte['date_redac']);
 
 	// Passer le nom du cache pour produire sa destruction automatique
 		$page = $fonc(array('cache' => $cache), array($contexte));