diff --git a/ecrire/inc_filtres.php3 b/ecrire/inc_filtres.php3
index 21c81ce4e06e448f5651841c99a10b5b5db5d9fb..7117e9d3db6a0fa7768ba83fcb2f2223caaf83f3 100644
--- a/ecrire/inc_filtres.php3
+++ b/ecrire/inc_filtres.php3
@@ -937,18 +937,38 @@ function alterner($i) {
 	return $args[(intval($i)-1)%($num-1)+1];
 }
 
+// recuperer un attribut html d'une balise
+// ($complet demande de retourner $r)
+function extraire_attribut($balise, $attribut, $complet = false) {
+	if (preg_match(",(.*<[^>]*)([[:space:]]+$attribut=[[:space:]]*(['\"])?(.*?)\\3)([[:space:]/>].*>.*),ims", $balise, $r)) {
+		$att = $r[4];
+	}
+	else
+		$att = NULL;
 
-function extraire_attribut($balise, $attribut) {
-# la mise en facteur ne marche pas....
-#  if (preg_match("/<[^>]*\s+$attribut=(['\"])([^\\1]*)\\1/i", $balise, $r))
-	if (preg_match("/<[^>]*\s+$attribut='([^']*)'/i", $balise, $r))
-		return $r[1];
-	else if (preg_match("/<[^>]*\s+$attribut=\"([^\"]*)\"/i", $balise, $r))
-		return $r[1];
+	if ($complet)
+		return array($att, $r);
 	else
-		return '';
+		return $att;
+}
+
+// modifier (ou inserer) un attribut html dans une balise
+function inserer_attribut($balise, $attribut, $val, $texte_backend=true) {
+	// preparer l'attribut
+	if ($texte_backend) $val = texte_backend($val); # supprimer les &nbsp; etc
+	$insert = " $attribut=\"".entites_html(texte_backend($val))."\" ";
+
+	list($old,$r) = extraire_attribut($balise, $attribut, true);
+	if ($old !== NULL) {
+		$balise = $r[1].$insert.$r[5];
+	}
+	else
+		$balise = preg_replace(",([[:space:]]/)?".">,", $insert."/>", $balise);
+
+	return $balise;
 }
 
+
 // fabrique un bouton de type $t de Name $n, de Value $v et autres attributs $a
 # a placer ailleurs que dans inc_filtres
 function boutonne($t, $n, $v, $a='') {
diff --git a/inc-balises.php3 b/inc-balises.php3
index e5279f9626bea522d912b041e80ba6eea1604d1a..2ee04b31940388f2083f66c62be2f61a3321cefd 100644
--- a/inc-balises.php3
+++ b/inc-balises.php3
@@ -598,7 +598,6 @@ function calculer_balise_logo ($p) {
 			$code_lien = "''";
 		$code_lien .= ", '". addslashes($align) . "'";
 	}
-	$code_lien .= ",'logo $type_objet ' . $_id_objet";
 
 	// cas des documents
 	if ($type_objet == 'DOCUMENT') {
diff --git a/inc-calcul-outils.php3 b/inc-calcul-outils.php3
index aec82ec9e3ee99fe1f035bb85a585b40b392178c..5f04574d82f342ce33a9992f2f58f9396de6d9f1 100644
--- a/inc-calcul-outils.php3
+++ b/inc-calcul-outils.php3
@@ -37,7 +37,7 @@ function calcule_fichier_logo($on) {
 
 // Renvoie le code html pour afficher un logo, avec ou sans survol, lien, etc.
 
-function affiche_logos($logos, $lien, $align, $alt='logo') {
+function affiche_logos($logos, $lien, $align) {
 
 	list ($arton, $artoff) = $logos;
 
@@ -51,7 +51,7 @@ function affiche_logos($logos, $lien, $align, $alt='logo') {
 		$mouseover = " onmouseover=\"this.src='$artoff'\" "
 			."onmouseout=\"this.src='$arton'\"";
 
-	$milieu = "<img src=\"$arton\" alt=\"".entites_html(strtolower($alt)).'"'
+	$milieu = "<img src=\"$arton\" alt=\"\""
 		. ($align ? " align='$align'" : '') 
 		. $taille
 		. $mouseover
@@ -253,7 +253,7 @@ function calcul_branche ($generation) {
 }
 
 // fonction appelee par la balise #LOGO_DOCUMENT
-function calcule_logo_document($id_document, $doubdoc, &$doublons, $flag_fichier, $params, $lien, $align, $alt) {
+function calcule_logo_document($id_document, $doubdoc, &$doublons, $flag_fichier, $params, $lien, $align) {
 	if (!$id_document) return '';
 	if ($doubdoc) $doublons["documents"] .= ','.$id_document;
 
@@ -311,7 +311,7 @@ function calcule_logo_document($id_document, $doubdoc, &$doublons, $flag_fichier
 
 	// sinon calculer le code html de l'image, sauf si reduire_image le donne
 	if (!$lien_logo)
-		$lien_logo = affiche_logos(array($logo), $lien, $align, $alt);
+		$lien_logo = affiche_logos(array($logo), $lien, $align);
 
 	return $lien_logo;
 }