diff --git a/ecrire/inc/filtres.php b/ecrire/inc/filtres.php
index d8ab796b6b0be60419fd4546475a5645840cf298..e2507e046f67254690335d6b11ff1be53525015d 100644
--- a/ecrire/inc/filtres.php
+++ b/ecrire/inc/filtres.php
@@ -2531,4 +2531,22 @@ function bando_style_prive_theme() {
 	return '';
 }
 
-?>
+/**
+ * Generer un bouton_action
+ * utilise par #BOUTON_ACTION
+ *
+ * @param string $libelle
+ * @param string $url
+ * @param string $class
+ * @param string $confirm
+ * @return string
+ */
+function bouton_action($libelle, $url, $class="", $confirm=""){
+	$onclick = $confirm?" onclick='return confirm(\"" . attribut_html($confirm) . "\");'":"";
+
+	return "<form class='bouton_action_post $class' method='post' action='$url'><div>".form_hidden($url)
+		."<button type='submit' class='submit'$onclick>$libelle</button></div></form>";
+}
+
+
+?>
\ No newline at end of file
diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php
index d00329844d267d73715658d9661020b3a964b4c1..c46d1a2af7e561ef8efbdd0c0f26c6f12f86bab4 100644
--- a/ecrire/public/balises.php
+++ b/ecrire/public/balises.php
@@ -1276,12 +1276,9 @@ function balise_BOUTON_ACTION_dist($p){
 	if (!$_class) $_class="''";
 
 	$_confirm = interprete_argument_balise(4,$p);
-	if (!$_confirm){ $_confirm="''"; $_onclick=''; }
-	else $_onclick = " onclick=\'return confirm(\"' . attribut_html($_confirm) . '\");\'";
+	if (!$_confirm) $_confirm="''";
 
-	$p->code = "'<form class=\'bouton_action_post '.$_class.'\' method=\'post\' action=\''.(\$u=$_url).'\'><div>'.form_hidden(\$u)
-.'<button type=\'submit\' class=\'submit\' $_onclick>' . $_label . '</button>'
-.'</div></form>'";
+	$p->code = "bouton_action($_label, $_url, $_class, $_confirm)";
 	$p->interdire_scripts = false;
 	return $p;
 }
@@ -1294,4 +1291,4 @@ function balise_SLOGAN_SITE_SPIP_dist($p) {
 	return $p;
 }
 
-?>
+?>
\ No newline at end of file