diff --git a/prive/formulaires/editer_liens.html b/prive/formulaires/editer_liens.html
index 9b4d7ee15857af1001b85e229eaa5354582c77a3..8dd97dd5e513442a8104e09fb5f9ab293eeb94d9 100644
--- a/prive/formulaires/editer_liens.html
+++ b/prive/formulaires/editer_liens.html
@@ -47,3 +47,13 @@
 	</div></form>
 	]
 </div>
+<script type="text/javascript">
+	jQuery('.action .delete').click(function(){
+		jQuery(this).parents('tr').addClass('remove').animate({opacity: "0.0"}, 'fast');
+	});
+	/* necessite le plugin jquery.color.js */
+	jQuery('tr.append').each(function(){
+		jQuery(this).css('opacity','0.0').animate({opacity: "1.0"}, 'slow').animate({backgroundColor: '#ffffff'}, 'slow',function(){jQuery(this).removeClass('append');});
+	});
+
+</script>
\ No newline at end of file
diff --git a/prive/formulaires/editer_liens.php b/prive/formulaires/editer_liens.php
index 017083e7a841bb482a371d0c9594c50106debcdf..ba46b68d6b2e84ee7ed80028aea1e96e5824079c 100644
--- a/prive/formulaires/editer_liens.php
+++ b/prive/formulaires/editer_liens.php
@@ -38,6 +38,7 @@ function formulaires_editer_liens_charger_dist($table_source,$objet,$id_objet){
 		'id'=>"$table_source-$objet-$id_objet", // identifiant unique pour les id du form
 		'_vue_liee' => $table_source."_lies",
 		'_vue_ajout' => $table_source."_associer",
+		'id_new'=>0,
 		'objet'=>$objet,
 		'id_objet'=>$id_objet,
 		'objet_source'=>$objet_source,
@@ -113,7 +114,7 @@ function formulaires_editer_liens_traiter_dist($table_source,$objet,$id_objet){
 				}
 			}
 		}
-		
+
 		if ($supprimer){
 			include_spip('action/editer_liens');
 			$oups = array();
@@ -130,16 +131,22 @@ function formulaires_editer_liens_traiter_dist($table_source,$objet,$id_objet){
 		}
 		
 		if ($ajouter){
+			$ajout_ok = false;
 			$ajouter_lien = charger_fonction('ajouter_lien','action');
 			foreach($ajouter as $k=>$v){
 				if ($lien = lien_verifier_action($k,$v)){
+					$ajout_ok = true;
 					$ajouter_lien($lien);
+					$lien = explode("-",$lien);
+					list(,$id_new,,) = $lien;
+					set_request('id_new',$id_new);
 				}
 			}
 			# oups ne persiste que pour la derniere action, si suppression
 			# une suppression suivie d'un ajout dans le meme hit est un remplacement
 			# non annulable !
-			set_request('_oups');
+			if ($ajout_ok)
+				set_request('_oups');
 		}
 	}
 
diff --git a/prive/listes/auteurs_lies.html b/prive/listes/auteurs_lies.html
index fe8208dbf7623755381c37d79c13e485c0ee580a..be6df01985116a174fd018f00ea1f4bf51c20b47 100644
--- a/prive/listes/auteurs_lies.html
+++ b/prive/listes/auteurs_lies.html
@@ -40,12 +40,12 @@
 	</thead>
 	<tbody>
 	<BOUCLE_liste_aut(AUTEURS){tout}{id_objet?}{objet}{where?}{statut?}{tri #ENV{par,multi nom},#GET{defaut_tri}}{pagination #ENV{nb,10} autl}{!compteur_articles_filtres #ENV{filtre_statut_articles,"'poubelle'"}}>
-		<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})][ (#EXPOSE|unique)][ (#NOM**|extraire_multi|initiale|=={#ENV{i}}|?{on}|unique)]">
+		<tr class="[(#COMPTEUR_BOUCLE|alterner{row_odd,row_even})][ (#EXPOSE|unique)][ (#NOM**|extraire_multi|initiale|=={#ENV{i}}|?{on}|unique)][(#ID_AUTEUR|=={#ENV{id_new}}|oui)append]">
 			<td class='statut'>[(#ID_AUTEUR|puce_changement_statut{#STATUT,0,auteur})]</td>
 			<td class='nom[ (#NOM|non)vide]'>[(#LOGO_AUTEUR|image_reduire{20,20})]<a href="[(#ID_AUTEUR|generer_url_entite{auteur})]"[ title="(#BIO*|couper{200}|attribut_html)"]>[(#RANG). ][(#NOM|sinon{<:texte_vide:>})]</a></td>
 			<td class='email'>[<a href='mailto:(#EMAIL)'>[(#EMAIL|couper{30})]</a>]</td>
 			<td class='nombre'>[(#COMPTEUR_ARTICLES|singulier_ou_pluriel{info_1_article,info_nb_articles})][<br /><span>(#PIPELINE{'compter_contributions_auteur',#ARRAY{args,#ARRAY{id_auteur,#ID_AUTEUR},data,#ARRAY{}}}|implode{'<br />'})</span>]</td>
-			<td class='action'><button class="button link" name="supprimer_lien[auteur-#ID_AUTEUR-#OBJET-#ID_OBJET]" value="X"><:lien_retirer_auteur:> [(#CHEMIN_IMAGE{supprimer-8.png}|balise_img{'X'})]</button></td>
+			<td class='action'><button class="button link delete" name="supprimer_lien[auteur-#ID_AUTEUR-#OBJET-#ID_OBJET]" value="X"><:lien_retirer_auteur:> [(#CHEMIN_IMAGE{supprimer-8.png}|balise_img{'X'})]</button></td>
 		</tr>
 	</BOUCLE_liste_aut>
 	</tbody>
diff --git a/prive/style_prive_formulaires.html b/prive/style_prive_formulaires.html
index b1d19011219a98dda3ba31380bdd0a5d29212562..eb213eeb60dc05e1a96469f4581bd9b2212863b2 100644
--- a/prive/style_prive_formulaires.html
+++ b/prive/style_prive_formulaires.html
@@ -610,4 +610,11 @@ input[type="submit"] {
 .formulaire_editer_liens .associer_mot.obligatoire.nonvu {background-color:#FFCDAF;}
 .formulaire_editer_liens .associer_mot.unseul.vu {color:#999999;}
 .formulaire_editer_liens .associer_mot select,.formulaire_editer_liens .associer_mot input.text {width:75%;}
-.formulaire_editer_liens .associer_mot .submit {float:#GET{right};font-weight:normal;}
\ No newline at end of file
+.formulaire_editer_liens .associer_mot .submit {float:#GET{right};font-weight:normal;}
+/* retour visuel a la suppression et a l'ajout */
+.formulaire_editer_liens .remove,
+.formulaire_editer_liens table.spip tr.remove,
+.formulaire_editer_liens table.spip tr.remove td {background-color:#FFD0BF;}
+.formulaire_editer_liens .append,
+.formulaire_editer_liens table.spip tr.append,
+.formulaire_editer_liens table.spip tr.append td {background-color:#E0FFCF;}