diff --git a/prive/formulaires/editer_liens.html b/prive/formulaires/editer_liens.html
index f54cb6ef03a4b4d5be9bac65f4da640f10c4b238..d036fe2d82f1f2c94d515f54fb987e1608061686 100644
--- a/prive/formulaires/editer_liens.html
+++ b/prive/formulaires/editer_liens.html
@@ -9,7 +9,9 @@
 		<input type="hidden" name="visible" value="#ENV{visible,0}" id="visible-#ENV{id}"/>
 	  <p class='boutons' style="display:none;"><span class='image_loading'>&nbsp;</span><input type='submit' class='submit' value='<:bouton_changer:>' /></p>
 	]
+
 		<INCLURE{fond=prive/listes/#ENV{_vue_liee},env,ajax}>
+		[<div class="action"><input type="hidden" name="_oups" value='(#ENV**{_oups})' /><input type="submit" name="annuler_oups" value="Ooops" /></div>]
 
 		[(#ENV{visible,0}|et{#ENV{editable}}|oui)
 			<div class="selecteur[(#ENV{recherche}|oui)filtre]">
diff --git a/prive/formulaires/editer_liens.php b/prive/formulaires/editer_liens.php
index 189ebe98130c2252caf03d83a498200f4e32f3df..be86ec1a1c0042ef102aff71115023da4e52764c 100644
--- a/prive/formulaires/editer_liens.php
+++ b/prive/formulaires/editer_liens.php
@@ -44,6 +44,7 @@ function formulaires_editer_liens_charger_dist($table_source,$objet,$id_objet){
 		'recherche'=>'',
 		'visible'=>0,
 		'editable'=>autoriser('modifier',$objet,$id_objet),
+		'_oups' => _request('_oups'),
 	);
 
 	return $valeurs;
@@ -53,17 +54,41 @@ function formulaires_editer_liens_traiter_dist($table_source,$objet,$id_objet){
 
 	if (_request('tout_voir'))
 		set_request('recherche','');
-	#var_dump($_REQUEST);
-	if ($ajouter = _request('ajouter_lien')){
-		$ajouter_lien = charger_fonction('ajouter_lien','action');
-		foreach($ajouter as $lien=>$dummy)
-			$ajouter_lien($lien);
-	}
 
-	if ($supprimer = _request('supprimer_lien')){
-		$supprimer_lien = charger_fonction('supprimer_lien','action');
-		foreach($supprimer as $lien=>$dummy)
-			$supprimer_lien($lien);
+
+	if (autoriser('modifier',$objet,$id_objet)) {
+		// annuler les suppressions du coup d'avant !
+		if (_request('annuler_oups')
+			AND $oups = _request('_oups')
+			AND $oups = unserialize($oups)){
+			$objet_source = objet_type($table_source);
+			include_spip('action/editer_liens');
+			foreach($oups as $oup) {
+				objet_associer(array($objet_source=>$oup[$objet_source]), array($objet=>$oup[$objet]),$oup);
+			}
+			# oups ne persiste que pour la derniere action, si suppression
+			set_request('_oups');
+		}
+		
+		if ($ajouter = _request('ajouter_lien')){
+			$ajouter_lien = charger_fonction('ajouter_lien','action');
+			foreach($ajouter as $lien=>$dummy)
+				$ajouter_lien($lien);
+			# oups ne persiste que pour la derniere action, si suppression
+			set_request('_oups');
+		}
+
+		if ($supprimer = _request('supprimer_lien')){
+			include_spip('action/editer_liens');
+			$oups = array();
+			foreach($supprimer as $lien=>$dummy) {
+				$lien = explode("-",$lien);
+				list($objet_source,$ids,$objet_lie,$idl) = $lien;
+				$oups = array_merge($oups,  objet_trouver_liens(array($objet_source=>$ids), array($objet_lie=>$idl)));
+				objet_dissocier(array($objet_source=>$ids), array($objet_lie=>$idl));
+			}
+			set_request('_oups',$oups?serialize($oups):null);
+		}
 	}
 
 	$res = array('editable'=>true);