diff --git a/ecrire/exec/valider_xml.php b/ecrire/exec/valider_xml.php
index b42647357780030f3bfc0522214c037fa7852242..ee80f1c18b04026ace2798510349197d7e7859ba 100644
--- a/ecrire/exec/valider_xml.php
+++ b/ecrire/exec/valider_xml.php
@@ -12,6 +12,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 include_spip('inc/presentation');
+include_spip('public/debug');
 
 // http://doc.spip.org/@exec_valider_xml_dist
 function exec_valider_xml_dist()
@@ -37,7 +38,8 @@ function valider_xml_ok($url)
 		$transformer_xml = charger_fonction('valider_xml', 'inc');
 
 		if (is_dir($url)) {
-			foreach(preg_files($url, '.php$') as $f) {
+			$res = array();
+			foreach(preg_files($url, 'articles.php$') as $f) {
 				$res[]= controle_une_url($transformer_xml, basename($f, '.php'), $url);
 			}
 			$res = valider_resultats($res);
@@ -87,20 +89,36 @@ function valider_xml_ok($url)
 // http://doc.spip.org/@valider_resultats
 function valider_resultats($res)
 {
+	foreach($res as $k => $l) {
+		$n = preg_match_all(",(.*?)(\d+)(\D+(\d+)<br />),",
+			$l[0],
+			$regs,
+			PREG_SET_ORDER);
+		if ($n = intval($n)) {
+			$x.= count_occ($regs);
+			if (count($x) > 1)
+				$x = join('+',$x);
+			else $x = trim(substr(textebrut($l[0]),0,16)) .' ...';
+			$x = ' (' . $x  . ')';
+		} else $x = '';
+		$res[$k][0] = $n;
+		$res[$k][4] = $x;
+	}
 	$i = 0;
 	$table = '';
 	rsort($res);
 	foreach($res as $l) {
 		$i++;
 		$class = 'row_'.alterner($i, 'even', 'odd');
-		list($erreurs, $texte, $script, $args) = $l;
+		list($nb, $texte, $script, $args,$erreurs) = $l;
 		if ($texte < 0) {
 			$texte = (0- $texte);
 			$color = ";color: red";
 		} else  {$color = '';}
 		$h = generer_url_ecrire('valider_xml', "var_url=$script");
 		$table .= "<tr class='$class'>"
-		. "<td style='text-align: right'>$erreurs</td>"
+		. "<td style='text-align: right'>$nb</td>"
+		. "<td style='text-align: left'>$erreurs</td>"
 		. "<td><a href='$h'>$script</a></td>"
 		. "<td>$args</td>"
 		. "<td style='text-align: right$color'>$texte</td>";
@@ -108,6 +126,8 @@ function valider_resultats($res)
 	return "<table class='spip'>"
 	  . "<tr><th>" 
 	  . _T('erreur_texte')
+	  . "</th><th>" 
+	  . _T('message')
 	  . "</th><th>script</th><th>args</th><th>"
 	  . _T('taille_octets', array('taille' => ' '))
 	  . "</th></tr>"
@@ -154,14 +174,8 @@ function controle_une_url($transformer_xml, $script, $dir)
 			} else $res = strlen($page2);
 		}
 	}
-	spip_log("validation de $script en appelant $f");
-	if (isset($GLOBALS['xhtml_error'])) {
-		preg_match_all(",(.*?)(\d+)(\D+(\d+)<br />),",
-		       $GLOBALS['xhtml_error'],
-		       $regs,
-		       PREG_SET_ORDER);
-		$n = count($regs);
-	} else $n = 0;
+	$n = isset($GLOBALS['xhtml_error']) ? $GLOBALS['xhtml_error'] : '';
+	spip_log("validation de $script en appelant $f : " . count($n) . " erreurs."); 
 	return array($n, $res, $script, $appel);
 }
 ?>
diff --git a/ecrire/inc/editer_article.php b/ecrire/inc/editer_article.php
index ad895ef38eb0c84e818ff0b45a0a019e3ea05a1c..967e747695c6a0964f956cff5deab47733bdd240 100644
--- a/ecrire/inc/editer_article.php
+++ b/ecrire/inc/editer_article.php
@@ -78,7 +78,7 @@ function editer_article_texte($texte, $config, $aider, $lang='')
 	if ($config['afficher_barre']) {
 		include_spip('inc/barre');
 		$afficher_barre = '<div>' 
-		.  afficher_barre('document.formulaire.texte',false,$lang)
+		.  afficher_barre("document.getElementById('text_area')",false,$lang)
 		. '</div>';
 	} else $afficher_barre = '';
 
diff --git a/ecrire/public/debug.php b/ecrire/public/debug.php
index c7eda1b71c95488b5ad0d728b57c6ad1c8da835c..53545f697f96c570d1cb2a3b7d230cf8089ce9a2 100644
--- a/ecrire/public/debug.php
+++ b/ecrire/public/debug.php
@@ -559,6 +559,11 @@ function emboite_texte($texte, $fonc='',$self='')
 				$regs,
 			       PREG_SET_ORDER);
 
+		$colors = array('#e0e0f0', '#f8f8ff');
+		$encore = count_occ($regs);
+		$encore2 = array();
+		$fautifs = array();
+
 		$err = '<tr><th>'
 		.  _T('numero')
 		. "</th><th>"
@@ -571,17 +576,7 @@ function emboite_texte($texte, $fonc='',$self='')
 		. _T('erreur')
 		. "</th></tr>";
 
-		$fautifs = array();
 		$i = 0;
-		$encore = array();
-		foreach($regs as $r) {
-			if (isset($encore[$r[1]]))
-			   $encore[$r[1]]++;
-			else $encore[$r[1]] = 1;
-		}			
-		$encore2 = array();
-		$colors = array('#e0e0f0', '#f8f8ff');
-
 		foreach($regs as $r) {
 			$i++;
 			list(,$msg, $ligne, $fin, $col) = $r;
@@ -626,6 +621,16 @@ function emboite_texte($texte, $fonc='',$self='')
 	}
 }
 
+function count_occ($regs)
+{
+	$encore = array();
+	foreach($regs as $r) {
+		if (isset($encore[$r[1]]))
+			$encore[$r[1]]++;
+		else $encore[$r[1]] = 1;
+	}
+	return $encore;
+}
 
 // http://doc.spip.org/@trace_query_start
 function trace_query_start()