diff --git a/.gitattributes b/.gitattributes
index 7cb8e75bee0fb2555caba800181b65dd877df8b6..82db6fb4c1f96762d8a1d41b9f6ea117c052302e 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -93,6 +93,7 @@ ecrire/action/referencer_traduction.php -text
 ecrire/action/regler_moderation.php -text
 ecrire/action/reorganiser.php -text
 ecrire/action/supprimer.php -text
+ecrire/action/supprimer_document.php -text
 ecrire/action/supprimer_traduction.php -text
 ecrire/action/tester.php -text
 ecrire/action/tester_taille.php -text
diff --git a/ecrire/action/documenter.php b/ecrire/action/documenter.php
index a1843cd3303815aad5f2e0e8c2f29249b27aa182..32e808df09a89678173f6b1832bece24df02d5df 100644
--- a/ecrire/action/documenter.php
+++ b/ecrire/action/documenter.php
@@ -39,39 +39,12 @@ function supprimer_lien_document($id_document, $objet, $id_objet) {
 	sql_updateq("spip_documents", array('id_vignette' => 0), "id_vignette=".$id_document);
 
 	// On supprime ensuite s'il est orphelin
-	if (!sql_countsel('spip_documents_liens', 'id_document='.$id_document))
-		return supprimer_document($id_document);
-
-}
-
-// http://doc.spip.org/@supprimer_document
-function supprimer_document ($id_document) {
-	include_spip('inc/documents');
-
-	if (!$doc = sql_fetsel('*', 'spip_documents', 'id_document='.$id_document))
-		return false;
-
-	spip_log("Suppression du document $id_document (".$doc['fichier'].")");
-
-	// Si c'est un document ayant une vignette, supprimer aussi la vignette
-	if ($doc['id_vignette']) {
-		supprimer_document($doc['id_vignette']);
-		sql_delete('spip_documents_liens', 'id_document='.$doc['id_vignette']);
-	}
-
-	// Supprimer le fichier si le doc est local,
-	// et la copie locale si le doc est distant
-	if ($doc['distant'] == 'oui') {
-		include_spip('inc/distant');
-		if ($local = copie_locale($doc['fichier'],'test'))
-			spip_unlink($local);
+	if (!sql_countsel('spip_documents_liens', 'id_document='.$id_document)){
+		$supprimer_document = charger_fonction('supprimer_document','action');
+		return $supprimer_document($id_document);
 	}
-	else spip_unlink(get_spip_doc($doc['fichier']));
-
-	sql_delete('spip_documents', 'id_document='.$id_document);
 }
 
-
 // http://doc.spip.org/@action_documenter_post
 function action_documenter_post($r)
 {
diff --git a/ecrire/action/supprimer_document.php b/ecrire/action/supprimer_document.php
new file mode 100644
index 0000000000000000000000000000000000000000..7be935d930fd365cdd42d878439efb1acfa60432
--- /dev/null
+++ b/ecrire/action/supprimer_document.php
@@ -0,0 +1,44 @@
+<?php
+
+/***************************************************************************\
+ *  SPIP, Systeme de publication pour l'internet                           *
+ *                                                                         *
+ *  Copyright (c) 2001-2008                                                *
+ *  Arnaud Martin, Antoine Pitrou, Philippe Riviere, Emmanuel Saint-James  *
+ *                                                                         *
+ *  Ce programme est un logiciel libre distribue sous licence GNU/GPL.     *
+ *  Pour plus de details voir le fichier COPYING.txt ou l'aide en ligne.   *
+\***************************************************************************/
+
+if (!defined("_ECRIRE_INC_VERSION")) return;
+
+// http://doc.spip.org/@supprimer_document
+function action_supprimer_document_dist($id_document) {
+	if (!autoriser('supprimer','document',$id_document))
+		return false;
+		
+	include_spip('inc/documents');
+	if (!$doc = sql_fetsel('*', 'spip_documents', 'id_document='.$id_document))
+		return false;
+
+	spip_log("Suppression du document $id_document (".$doc['fichier'].")");
+
+	// Si c'est un document ayant une vignette, supprimer aussi la vignette
+	if ($doc['id_vignette']) {
+		supprimer_document($doc['id_vignette']);
+		sql_delete('spip_documents_liens', 'id_document='.$doc['id_vignette']);
+	}
+
+	// Supprimer le fichier si le doc est local,
+	// et la copie locale si le doc est distant
+	if ($doc['distant'] == 'oui') {
+		include_spip('inc/distant');
+		if ($local = copie_locale($doc['fichier'],'test'))
+			spip_unlink($local);
+	}
+	else spip_unlink(get_spip_doc($doc['fichier']));
+
+	sql_delete('spip_documents', 'id_document='.$id_document);
+}
+
+?>
\ No newline at end of file
diff --git a/ecrire/inc/legender.php b/ecrire/inc/legender.php
index d99526c955d22503b50061a75e37e4bd8a6b5c8e..4b7ced1765a16f397e81fb70e6d32bafe9c87661 100644
--- a/ecrire/inc/legender.php
+++ b/ecrire/inc/legender.php
@@ -87,10 +87,8 @@ function legender_suppression($id, $id_document, $ancre, $s, $script, $supp, $ty
 	// sans doute a revoir car le document serait alors peut-etre orphelin
 
 	if ($id <= 0) return '';
-	// si plusieurs liens sur le doc, pas de bouton de suppression
-	if (sql_countsel('spip_documents_liens', 'id_document='.$id_document) > 1)
-		return '';
 
+	// la fonction 'supprimer_document' ne fait que de-associer si un document est utilise par ailleurs
 	$texte = _T('icone_supprimer_document');
 
 	if (preg_match('/_edit$/', $script)) {