diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index f5fe4decd32cf7c3ba5285f848974e0315d3041e..c835f1e42c9e1d8a04edd1fa22411753d7105f3c 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -415,28 +415,32 @@ function parametre_url($url, $c, $v=NULL, $sep='&') {
 	$a = array_shift($url);
 	if (!$a) $a= './';
 
+	$regexp = ',^(' . $c . ')(=.*)?$,';
+	$ajouts = array_flip(explode('|',$c));
+	$u = rawurlencode($v);
 	// lire les variables et agir
 	foreach ($url as $n => $val) {
-		if (preg_match(',^'.preg_quote($c,',').'(=.*)?$,', urldecode($val), $r)) {
+		if (preg_match($regexp, urldecode($val), $r)) {
 			if ($v === NULL) {
-				return $r[1]?substr($r[1],1):''; 
+				return $r[2]?substr($r[2],1):''; 
 			}
 			elseif (!$v) {// suppression
 				unset($url[$n]);
 			} else {
-				$url[$n] = $c.'='.rawurlencode($v);
-				$v = '';
+				$url[$n] = $r[1].'='.$u;
+				unset($ajouts[$r[1]]);
 			}
 		}
 	}
 
-	// ajouter notre parametre si on ne l'a pas encore trouve
+	// traiter les parametres pas encore trouves
 	if ($v === NULL
 	AND $args = func_get_args()
 	AND count($args)==2)
 		return $v;
-	elseif ($v)
-		$url[] = $c.'='.rawurlencode($v);
+	elseif ($v) {
+		foreach($ajouts as $k => $n) $url[] = $k .'=' . $u;
+	} 
 
 	// eliminer les vides
 	$url = array_filter($url);
diff --git a/ecrire/public/debug.php b/ecrire/public/debug.php
index 9e337c3b523a2810167b155e2bd36c73b05b9b6c..48d0236f3f39b9f7228e40c6aee688824ddc3c4f 100644
--- a/ecrire/public/debug.php
+++ b/ecrire/public/debug.php
@@ -399,8 +399,8 @@ function debug_dumpfile ($texte, $fonc, $type) {
 	ob_end_clean();
 	$self = str_replace("\\'", ''', self());
 	$self = parametre_url($self,'var_mode', 'debug');
-
 	echo debug_debut($fonc);
+
 	if ($var_mode_affiche !== 'validation') {
 		$self = parametre_url($self,'var_mode', 'debug');
 	  foreach ($debug_objets['sourcefile'] as $nom_skel => $sourcefile) {
@@ -452,31 +452,8 @@ function debug_dumpfile ($texte, $fonc, $type) {
 		echo "</fieldset>\n";
 	  }
 	  echo "</div>\n<a id='$fonc'></a>\n"; 
-	  if ($var_mode_objet && ($res = $debug_objets[$var_mode_affiche][$var_mode_objet])) {
-	    echo "<div id=\"debug_boucle\"><fieldset>";
-	    if ($var_mode_affiche == 'resultat') {
-		echo "<legend>",$debug_objets['pretty'][$var_mode_objet],"</legend>";
-		$req = $debug_objets['requete'][$var_mode_objet];
-		if (function_exists('traite_query'))
-		  $req = traite_query($req);
-		echo ancre_texte($req);
-		foreach ($res as $view) 
-			if ($view) echo "\n<br /><fieldset>",interdire_scripts($view),"</fieldset>";
-
-	    } else if ($var_mode_affiche == 'code') {
-		echo  "<legend>",$debug_objets['pretty'][$var_mode_objet],"</legend>";
-		echo ancre_texte("<"."?php\n".$res."\n?".">");
-	    } else if ($var_mode_affiche == 'boucle') {
-		echo  "<legend>",$debug_objets['pretty'][$var_mode_objet],"</legend>";
-		echo ancre_texte($res);
-	    } else if ($var_mode_affiche == 'squelette') {
-		echo  "<legend>",$debug_objets['sourcefile'][$var_mode_objet],"</legend>";
-		echo ancre_texte($debug_objets['squelette'][$var_mode_objet]);
-	    }
-	    echo "</fieldset></div>";
-	  }
+	  echo debug_affiche($fonc, $debug_objets, $var_mode_objet, $var_mode_affiche);
 	}
-
 	if ($texte) {
 
 		$err = "";
@@ -507,6 +484,34 @@ function debug_dumpfile ($texte, $fonc, $type) {
 	exit;
 }
 
+function debug_affiche($fonc, $tout, $objet, $affiche)
+{
+	if (!$objet) {if ($affiche == 'squelette') $objet = $fonc;}
+	if (!$objet OR !$res = $tout[$affiche][$objet]) return;
+	$res = "<div id=\"debug_boucle\"><fieldset>";
+	if ($affiche == 'resultat') {
+		$res .= "<legend>" .$tout['pretty'][$objet] ."</legend>";
+		$req = $tout['requete'][$objet];
+		if (function_exists('traite_query'))
+			$req = traite_query($req);
+		$res .= ancre_texte($req);
+		foreach ($res as $view) 
+			if ($view) $res .= "\n<br /><fieldset>" .interdire_scripts($view) ."</fieldset>";
+
+	} else if ($affiche == 'code') {
+		$res .=  "<legend>" .$tout['pretty'][$objet] ."</legend>";
+		$res .= ancre_texte("<"."?php\n".$res."\n?".">");
+	} else if ($affiche == 'boucle') {
+		$res .=  "<legend>" .$tout['pretty'][$objet] ."</legend>";
+		$res .= ancre_texte($res);
+	} else if ($affiche == 'squelette') {
+		$res .=  "<legend>" .$tout['sourcefile'][$objet] ."</legend>";
+		$res .= ancre_texte($tout['squelette'][$objet]);
+	}
+	$res .= "</fieldset></div>";
+	return $res;
+}
+
 // http://doc.spip.org/@debug_debut
 function debug_debut($titre)
 {
diff --git a/ecrire/public/styliser.php b/ecrire/public/styliser.php
index c1d959d5acffd663d5cbc58bdc23fe86bc06456d..eb31e22602c46986fc188275d6aebd48661a9960 100644
--- a/ecrire/public/styliser.php
+++ b/ecrire/public/styliser.php
@@ -30,7 +30,7 @@ function public_styliser_dist($fond, $id_rubrique, $lang='', $connect='', $ext='
 		AND $table = $trouver_table($fond, $connect)) {
 				$base = _DIR_TMP . $fond . ".$ext";
 				if (!file_exists($base)
-				OR  $GLOBALS['var_mode'] == 'recalcul') {
+				OR  $GLOBALS['var_mode']) {
 					$vertebrer = charger_fonction('vertebrer', 'public');
 					$f = fopen($base, 'w');
 					fwrite($f, $vertebrer($table));
diff --git a/ecrire/public/vertebrer.php b/ecrire/public/vertebrer.php
index 5d358b1d33d03a7867e9bb93f0316d6ed676f1f2..cca75bd822da8b4c61f9747c9bad1e024fa7c061 100755
--- a/ecrire/public/vertebrer.php
+++ b/ecrire/public/vertebrer.php
@@ -33,13 +33,14 @@ function vertebrer_sort($fields, $direction)
 	foreach($fields as $n => $t) {
 		$tri = $direction
 		. ((test_sql_int($t) OR test_sql_date($r)) ? 'tri_n' : 'tri');
-		$args ="";
+		$url ="";
 		foreach (array('tri', 'tri_n', '_tri', '_tri_n') as $c) {
-		  if ($tri != $c) $args .= '|parametre_url{' . $c .',""}';
+			if ($tri != $c) $url .= "|$c";
 		}
-      // #SELF contient tous les parametes *tri*. A ameliorer
-		$url = "[(#SELF$args|parametre_url{" . $tri . ",'" . $n . "'})]";
-		$res .= "\n\t\t<th><a href='$url'>$n</a></th>";
+		$url = "|parametre_url{" . $tri . ",'" . $n . "'}"
+		. '|parametre_url{"' . substr($url,1) .'",""}';
+
+		$res .= "\n\t\t<th><a href='[(#SELF$url)]'>$n</a></th>";
 	}
 	return $res;
 }
@@ -96,18 +97,24 @@ function public_vertebrer_dist($desc)
 <h1 style='text-align:center'>SPIPAdmin $surnom</h1><br />\n" .
 	  // au minimum: "<BOUCLE1($fond)></BOUCLE1>#TOTAL_BOUCLE<//B1>")
 	  // au maximum:
-	"<B1>#ANCRE_PAGINATION[<p class='pagination'>(#PAGINATION)</p>]" .
-	"<table class='spip' border='1' width='90%'>" .
-	"<tr>\n\t<th>Nb</th>" .
+	"<B1>#ANCRE_PAGINATION" .
+	"\n<p class='pagination'>" .
+	"\n<a style='float:left;' " .
+	"href='./?page=$surnom&amp;var_mode=debug&amp;var_mode_affiche=squelette#debug_boucle'>squelette" .
+	"</a>" .
+	"\n#PAGINATION" .
+	"\n</p>\n<table class='spip' border='1' width='90%'>" .
+	"\n\t<tr>\n\t\t<th>Nb</th>" .
 	vertebrer_sort($field,'') .
-	"\n</tr>\n<BOUCLE1($surnom)" .
+	"\n\t</tr>\n<BOUCLE1($surnom)" .
 	vertebrer_crit($field) .
 	'>' .
 	vertebrer_cell($field) .
 	"\n\t</tr>\n</BOUCLE1>" .
-	"\n\t<tr>\n\t<th>Nb</th>" .
+	"\n\t<tr>\n\t\t<th>Nb</th>" .
 	vertebrer_sort($field,'_') .
-	"\n</tr></table>" .
-"</B1><h2 style='text-align:center'><:texte_vide:></h2><//B1></div></body></html>";
+	"\n\t</tr>\n</table>" .
+"\n</B1>\n<h2 style='text-align:center'><:texte_vide:></h2>" .
+"\n<//B1></div></body></html>";
 }
 ?>