diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index fb8897aa3358e8e247cf20daf64e938ae8d9d1a5..537ca89b1062a02cd2db7d45864ada9f38606d4c 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -4213,10 +4213,15 @@ function url_absolue_css($css) {
  *     pour obtenir la valeur de `$tableau['sous']['element']['ici']`
  * @param mixed $defaut
  *     Valeur par defaut retournée si la clé demandée n'existe pas
+ * @param bool  $conserver_null
+ *     Permet de forcer la fonction à renvoyer la valeur null d'un index
+ *     et non pas $defaut comme cela est fait naturellement par la fonction
+ *     isset. On utilise alors array_key_exists() à la place de isset().
+ * 
  * @return mixed
  *     Valeur trouvée ou valeur par défaut.
  **/
-function table_valeur($table, $cle, $defaut = '') {
+function table_valeur($table, $cle, $defaut = '', $conserver_null = false) {
 	foreach (explode('/', $cle) as $k) {
 
 		$table = is_string($table) ? @unserialize($table) : $table;
@@ -4224,7 +4229,11 @@ function table_valeur($table, $cle, $defaut = '') {
 		if (is_object($table)) {
 			$table = (($k !== "") and isset($table->$k)) ? $table->$k : $defaut;
 		} elseif (is_array($table)) {
-			$table = isset($table[$k]) ? $table[$k] : $defaut;
+			if ($conserver_null) {
+				$table = array_key_exists($k, $table) ? $table[$k] : $defaut;
+			} else {
+				$table = isset($table[$k]) ? $table[$k] : $defaut;
+			}
 		} else {
 			$table = $defaut;
 		}