diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index 02f2c4649e7f1e12a71ba680a014c383e1c8364e..d4ed32962a2751282f298af7a6e2d3f9dca48735 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -14,9 +14,7 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_spip('inc/charsets');
-// on definit la matrice pour les filtres images : le compilateur fera passer l'appel par filtrer
-// on ne definit pas de fichier a inclure : l'inclusion sera faite dans image_filtrer
-// par un include_spip unique en cas d'appel multiple
+// signaler les filtres ayant besoin d'inclue inc/filtres_images
 
 $GLOBALS['spip_matrice']['image_valeurs_trans'] = '';
 $GLOBALS['spip_matrice']['image_reduire'] = '';
@@ -43,18 +41,17 @@ $GLOBALS['spip_matrice']['image_imagick'] = '';
 $GLOBALS['spip_matrice']['image_ramasse_miettes'] = '';
 $GLOBALS['spip_matrice']['image_passe_partout'] = '';
 
-$inc_filtres_images = _DIR_RESTREINT."inc/filtres_images.php"; # find_in_path('inc/filtres_images');
-$GLOBALS['spip_matrice']['couleur_dec_to_hex'] = $inc_filtres_images;
-$GLOBALS['spip_matrice']['couleur_hex_to_dec'] = $inc_filtres_images;
-$GLOBALS['spip_matrice']['couleur_extreme'] = $inc_filtres_images;
-$GLOBALS['spip_matrice']['couleur_inverser'] = $inc_filtres_images;
-$GLOBALS['spip_matrice']['couleur_eclaircir'] = $inc_filtres_images;
-$GLOBALS['spip_matrice']['couleur_foncer'] = $inc_filtres_images;
-$GLOBALS['spip_matrice']['couleur_foncer_si_claire'] = $inc_filtres_images;
-$GLOBALS['spip_matrice']['couleur_eclaircir_si_foncee'] = $inc_filtres_images;
-$GLOBALS['spip_matrice']['couleur_web'] = $inc_filtres_images;
-$GLOBALS['spip_matrice']['couleur_4096'] = $inc_filtres_images;
-$GLOBALS['spip_matrice']['couleur_saturation'] = $inc_filtres_images;
+$GLOBALS['spip_matrice']['couleur_dec_to_hex'] ='';
+$GLOBALS['spip_matrice']['couleur_hex_to_dec'] ='';
+$GLOBALS['spip_matrice']['couleur_extreme'] ='';
+$GLOBALS['spip_matrice']['couleur_inverser'] ='';
+$GLOBALS['spip_matrice']['couleur_eclaircir'] ='';
+$GLOBALS['spip_matrice']['couleur_foncer'] ='';
+$GLOBALS['spip_matrice']['couleur_foncer_si_claire'] ='';
+$GLOBALS['spip_matrice']['couleur_eclaircir_si_foncee'] ='';
+$GLOBALS['spip_matrice']['couleur_web'] ='';
+$GLOBALS['spip_matrice']['couleur_4096'] ='';
+$GLOBALS['spip_matrice']['couleur_saturation'] ='';
 
 // http://doc.spip.org/@chercher_filtre
 function chercher_filtre($fonc, $default=NULL) {
@@ -78,9 +75,8 @@ function appliquer_filtre($arg, $filtre) {
 // et arguments
 // http://doc.spip.org/@filtrer
 function filtrer($filtre) {
-	if (isset($GLOBALS['spip_matrice'][$filtre])
-	AND $f = $GLOBALS['spip_matrice'][$filtre])
-		include_once($f);
+	if (isset($GLOBALS['spip_matrice'][$filtre]))
+		include_spip('inc/filtres_images');
 
 	$tous = func_get_args();
 	if (substr($filtre,0,6)=='image_')
@@ -153,16 +149,11 @@ function version_svn_courante($dir) {
 
 // http://doc.spip.org/@image_filtrer
 function image_filtrer($args){
-	static $inclure = true;
 	$filtre = array_shift($args); # enlever $filtre
 	$texte = array_shift($args);
 	if (!$texte) return;
 	// Cas du nom de fichier local
 	if (preg_match(',^('._DIR_IMG .'|'. _DIR_IMG_PACK .'|'. _DIR_VAR .'),', $texte)) {
-		if ($inclure){
-			include_spip('inc/filtres_images');
-			$inclure = false;
-		}
 		array_unshift($args,"<img src='$texte' />");
 		return call_user_func_array($filtre, $args);
 	}
@@ -171,10 +162,6 @@ function image_filtrer($args){
 	if (preg_match_all(
 		',(<([a-z]+) [^<>]*spip_documents[^<>]*>)?\s*(<img\s.*>),UimsS',
 		$texte, $tags, PREG_SET_ORDER)) {
-		if ($inclure){
-			include_spip('inc/filtres_images');
-			$inclure = false;
-		}
 		foreach ($tags as $tag) {
 			$class = extraire_attribut($tag[3],'class');
 			if (!$class || (strpos($class,'no_image_filtrer')===FALSE)){
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index 85e935980346483dfcf5918c29f1d5262aceb871..89de11e7fb0b9311c24824739053da68caa581f0 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -625,23 +625,22 @@ function memoriser_fichiers($dir) {
 
 // http://doc.spip.org/@find_in_path
 function find_in_path ($file, $dirname='') {
-	static $ram;
+	static $files=array(), $dirs=array();
 
 	$a = strrpos($file,'/');
 	if ($a !== false) {
-		$dirname .= substr($file, 0, $a+1);
-		$file = substr($file, $a+1);
+		$dirname .= substr($file, 0, ++$a);
+		$file = substr($file, $a);
 	}
 
+	if (isset($files[$dirname][$file])) return $files[$dirname][$file];
+
 	foreach(creer_chemin() as $dir) {
-		if (!isset($ram[$s = $dir . $dirname]))
-			$ram[$s] = is_dir($s) ? array() : false;
-		if (isset($ram[$s][$file])) {
-			if ($a = $ram[$s][$file]) return $a;
-		} elseif (is_array($ram[$s])) {
-			$a = $s . $file;
-			if ($ram[$s][$file]=(is_readable($a)?$a:''))
-				return $a;
+		if (!isset($dirs[$a = $dir . $dirname]))
+			$dirs[$a] = is_dir($a);
+		if ($dirs[$a]) {
+			if (is_readable($a .= $file))
+				return $files[$dirname][$file] = $a;
 		}
 	}
 }