diff --git a/ecrire/action/legender_auteur.php b/ecrire/action/legender_auteur.php
index a5e377060fcb36f2b5373558bf519549f0e608e9..4910445efa84b9b50f8aaf85fbfe97780377ce99 100644
--- a/ecrire/action/legender_auteur.php
+++ b/ecrire/action/legender_auteur.php
@@ -22,9 +22,7 @@ function action_legender_auteur_dist()
         $securiser_action = charger_fonction('securiser_action', 'inc');
         $arg = $securiser_action();
 
-	$echec = array();
-
-        if (!preg_match(",^(\d+)\D(\d*)(\D(\w*)\D(.*))?$,", $arg, $r)) {
+        if (!preg_match(",^(\d+)\D(\d*)(\D(\w*))?$,", $arg, $r)) {
 		$r = "action_legender_auteur_dist $arg pas compris";
 		spip_log($r);
         } else 	redirige_par_entete(action_legender_auteur_post($r));
@@ -48,7 +46,10 @@ function action_legender_auteur_post($r)
 	$statut = _request('statut');
 	$url_site = _request('url_site');
 
-	list($tout, $id_auteur, $ajouter_id_article,$x,$s, $n) = $r;
+	$echec = array();
+
+
+	list($tout, $id_auteur, $ajouter_id_article,$x,$s) = $r;
 //
 // si id_auteur est hors table, c'est une creation sinon une modif
 //
@@ -59,17 +60,16 @@ function action_legender_auteur_post($r)
 	  if (!$auteur) {
 		$id_auteur = 0;
 		$source = 'spip';
-		$nom = $n ? $n : _T('ecrire:item_nouvel_auteur');
 		$statut = '1comite'; // statut par defaut
 		if ($s) {
 		  if (ereg("^(0minirezo|1comite|5poubelle|6forum)$",$s))
 		    $statut = $s;
 		  else spip_log("action_legender_auteur_dist: statut $s incompris");
 		}
-	  } else $nom = _request('nom'); // risque de conflits en globale.
+	  }
 
 	  $acces = ($id_auteur == $auteur_session['id_auteur']) ? true : " a voir ";
-	  $auteur['nom'] = corriger_caracteres($nom);
+	  $auteur['nom'] = corriger_caracteres(_request('nom'));
 
 	// login et mot de passe
 	$modif_login = false;
@@ -183,21 +183,19 @@ function action_legender_auteur_post($r)
 		spip_query("UPDATE spip_auteurs SET $query_pass		nom=" . _q($auteur['nom']) . ",						login=" . _q($auteur['login']) . ",					bio=" . _q($auteur['bio']) . ",						email=" . _q($auteur['email']) . ",					nom_site=" . _q($auteur['nom_site']) . ",				url_site=" . _q($auteur['url_site']) . ",				pgp=" . _q($auteur['pgp']) .					(!$extra ? '' : (", extra = " . _q($extra) . "")) .			" WHERE id_auteur=".$auteur['id_auteur']);
 	}
 
-// Si on modifie la fiche auteur, reindexer 
-	if ($nom OR $statut) {
-		if ($GLOBALS['meta']['activer_moteur'] == 'oui') {
-			include_spip("inc/indexation");
-			marquer_indexer('spip_auteurs', $id_auteur);
-		}
-	// ..et mettre a jour les fichiers .htpasswd et .htpasswd-admin
-		ecrire_acces();
+	// Si on modifie la fiche auteur, reindexer 
+	if ($GLOBALS['meta']['activer_moteur'] == 'oui') {
+		include_spip("inc/indexation");
+		marquer_indexer('spip_auteurs', $id_auteur);
 	}
+	// ..et mettre a jour les fichiers .htpasswd et .htpasswd-admin
+	ecrire_acces();
 
-	if ($echec) $echec = '&echec=' . join('@@@', $echec);
+	$echec = $echec ? '&echec=' . join('@@@', $echec) : '';
 
 	// il faudrait rajouter OR $echec mais il y a conflit avec Ajax
 
-	if (($init = ($tout[0]=='0'))) {
+	if ($echec OR ($init = ($tout[0]=='0'))) {
 	  // tout nouveau. envoyer le formulaire de saisie du reste
 	  // en transmettant le retour eventuel
 	  // decode / encode car encode pas necessairement deja fait.
@@ -205,7 +203,9 @@ function action_legender_auteur_post($r)
 		$ret = !$redirect ? '' 
 		  : ('&redirect=' . rawurlencode(rawurldecode($redirect)));
 
-		return generer_url_ecrire("auteur_infos", "id_auteur=$id_auteur&initial=$init$echec$ret",true);
+		$script = (_request('var_ajaxcharset') ? 'legender_auteur' : 'auteur_infos');
+
+		return generer_url_ecrire($script, "id_auteur=$id_auteur&initial=$init$echec$ret",true);
 	} else {
 	  // modif: renvoyer le resultat ou a nouveau le formulaire si erreur
 		  if (!$redirect) {
@@ -214,11 +214,7 @@ function action_legender_auteur_post($r)
 		  } else 
 		    list($redirect,$anc) = split('#',rawurldecode($redirect));
 
-		if (!$echec) 
-		  $redirect .= '&initial=-1' . $anc;
-		else  {
-		  $redirect .= $echec . '&initial=0' . $anc;
-		}
+		  $redirect .= $echec . $anc . ($echec ? '' : '&initial=-1');
 		return $redirect;
 	}
 }
diff --git a/ecrire/inc/editer_auteurs.php b/ecrire/inc/editer_auteurs.php
index a1f002ace5b918e8de476d6df415fa55ec808db4..32fbdb8931dbe67757c5fa4d0f1cd87e7b01299f 100644
--- a/ecrire/inc/editer_auteurs.php
+++ b/ecrire/inc/editer_auteurs.php
@@ -55,7 +55,7 @@ function editer_auteurs_objet($type, $id, $flag, $cherche_auteur, $ids, $les_aut
 
 	$bouton_creer_auteur =  $GLOBALS['connect_toutes_rubriques'];
 	$clic = _T('icone_creer_auteur');
-	$arg = "0/$id/"  . ($statut ? $statut : '1comite') . '/';
+	$arg = "0/$id/"  . ($statut ? $statut : '1comite');
 //
 // complement de action/editer_auteurs.php pour notifier la recherche d'auteur
 //
@@ -67,7 +67,8 @@ function editer_auteurs_objet($type, $id, $flag, $cherche_auteur, $ids, $les_aut
 
 		if ($type=='article' && $bouton_creer_auteur) { // pas generique pour le moment
 
-			$legende = redirige_action_auteur("legender_auteur", $arg . rawurlencode($cherche_auteur), "articles","id_article=$id");
+			$legende = redirige_action_auteur("legender_auteur", $arg, "articles","id_article=$id");
+			$legende = parametre_url($legende, 'nom', $cherche_auteur);
 
 			$reponse .="<div style='width: 200px;'>"
 			. icone_horizontale($clic, $legende, "redacteurs-24.gif", "creer.gif", false)
diff --git a/ecrire/inc/instituer_auteur.php b/ecrire/inc/instituer_auteur.php
index 7dd69b961078a5b56cdbfe0c17e4094561b553b9..9880600715281cbf9c83800dfdc25fd398973f07 100644
--- a/ecrire/inc/instituer_auteur.php
+++ b/ecrire/inc/instituer_auteur.php
@@ -43,7 +43,7 @@ function inc_instituer_auteur_dist($id_auteur, $statut, $url_self)
 
 		$lien = !$modif 
 		? ''
-		: array("&nbsp;&nbsp;&nbsp;&nbsp;[<span class='spip_x-small'>" . _T('lien_supprimer_rubrique') . "</span>]");
+		: array(_T('lien_supprimer_rubrique'));
 
 		$res = '';
 
@@ -56,7 +56,9 @@ function inc_instituer_auteur_dist($id_auteur, $statut, $url_self)
 			. typo($row_admin["multi"])
 			. "</a>"
 			. (!$modif ? '' :
-			   ajax_action_auteur('instituer_auteur', "$id_auteur/-$id_rubrique", $url_self, $modif, $lien))
+				"&nbsp;&nbsp;&nbsp;&nbsp;[<span class='spip_x-small'>"
+				. ajax_action_auteur('instituer_auteur', "$id_auteur/-$id_rubrique", $url_self, $modif, $lien)
+				. "</span>]")
 			. '</li>';
 		}
 
diff --git a/ecrire/inc/legender_auteur.php b/ecrire/inc/legender_auteur.php
index 7759fbb601397097e2bbed50df5c2743192d51ea..bff7a9f49f85a744c43c1a647ffb44b534f8b008 100644
--- a/ecrire/inc/legender_auteur.php
+++ b/ecrire/inc/legender_auteur.php
@@ -14,11 +14,12 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 
 // http://doc.spip.org/@inc_legender_auteur_dist
-function inc_legender_auteur_dist($id_auteur, $auteur, $mode, $echec='', $redirect='')
+function inc_legender_auteur_dist($id_auteur, $auteur, $initial, $echec='', $redirect='')
 {
-	$corps = (($mode < 0) OR !statut_modifiable_auteur($id_auteur, $auteur))
+
+	$corps = (($initial < 0) OR !statut_modifiable_auteur($id_auteur, $auteur))
 	? legender_auteur_voir($auteur, $redirect)
-	: legender_auteur_saisir($id_auteur, $auteur, $mode, $echec, $redirect);
+	: legender_auteur_saisir($id_auteur, $auteur, $initial, $echec, $redirect);
 	
 	return  $redirect ? $corps :
 	  ajax_action_greffe("legender_auteur-$id_auteur", $corps);
@@ -26,7 +27,7 @@ function inc_legender_auteur_dist($id_auteur, $auteur, $mode, $echec='', $redire
 }
 
 // http://doc.spip.org/@legender_auteur_saisir
-function legender_auteur_saisir($id_auteur, $auteur, $mode, $echec='', $redirect='')
+function legender_auteur_saisir($id_auteur, $auteur, $initial, $echec='', $redirect='')
 {
 	global $options, $connect_statut, $connect_id_auteur, $connect_toutes_rubriques;
 	$corps = '';
@@ -55,9 +56,9 @@ function legender_auteur_saisir($id_auteur, $auteur, $mode, $echec='', $redirect
 	. _T('entree_nom_pseudo')
 	. ")<br />\n"
 	. "<input type='text' name='nom' class='formo' size='40' value=\""
-	. entites_html($auteur['nom'])
+	. entites_html(sinon($auteur['nom'], _T('ecrire:item_nouvel_auteur')))
 	. "\" "
-	. (!$mode ? '' : ' onfocus="if(!antifocus){this.value=\'\';antifocus=true;}"')
+	. (strlen($auteur['nom']) ? '' : ' onfocus="if(!antifocus){this.value=\'\';antifocus=true;}"')
 	. " />\n<br />"
 	. "<b>"._T('entree_adresse_email')."</b>";
 
@@ -177,9 +178,11 @@ function legender_auteur_saisir($id_auteur, $auteur, $mode, $echec='', $redirect
 	return '<div>&nbsp;</div>'
 	. "\n<div class='serif'>"
 	. debut_cadre_relief("fiche-perso-24.gif", true, "", _T("icone_informations_personnelles"))
-	. ($redirect
-	     ? generer_action_auteur('legender_auteur', $arg, $redirect, $corps)
-	   : ajax_action_post('legender_auteur', $arg, 'auteur_infos', "id_auteur=$id_auteur&initial=-1&retour=$redirect", $corps, _T('bouton_enregistrer'), $att))
+	. (
+	$redirect
+	     ? generer_action_auteur('legender_auteur', $arg, $redirect,
+	     	$corps . "<div align='right'><input type='submit' value='"._T('bouton_enregistrer')."' class='fondo' /></div>")
+	   : ajax_action_post('legender_auteur', $arg, 'auteur_infos', "id_auteur=$id_auteur&initial=-1", $corps, _T('bouton_enregistrer'), $att))
 	. fin_cadre_relief(true)
 	. '</div>';
 }
@@ -255,7 +258,7 @@ function legender_auteur_voir($auteur, $redirect)
 	if (statut_modifiable_auteur($id_auteur, $auteur)) {
 		$ancre = "legender_auteur-$id_auteur";
 		$clic = _T("admin_modifier_auteur");
-		$h = generer_url_ecrire("auteur_infos","id_auteur=$id_auteur&initial=0");
+		$h = generer_url_ecrire("auteur_infos","id_auteur=$id_auteur");
 		if ((_SPIP_AJAX === 1 ) AND !$redirect) {
 		  $evt = "\nonclick=" . ajax_action_declencheur($h,$ancre);
 		  $h = "<a\nhref='$h#$ancre'$evt>$clic</a>";