diff --git a/dist/fond/ajax.html b/dist/fond/ajax.html
index fa6ea5a49e2867341945325115a0592634634f87..9e267de2e5d511d4e6a452e6a9a42bc4e8159344 100644
--- a/dist/fond/ajax.html
+++ b/dist/fond/ajax.html
@@ -1,8 +1,10 @@
-[(#REM) calculer l'env et la cle pour le contexte du traitement ajax]
+[(#REM)
+
+	Traiter les < INCLURE {ajax} >
+
+][(#REM) calculer l'env et la cle pour le contexte du traitement ajax]
 #SET{env,#ENV**|supprimer_debuts|base64_encode}
 #SET{cle,#EVAL{#VAL{'include_spip("inc/securiser_action")?calculer_cle_action("'}|concat{#GET{env},'"):""'}}}
-[
 <div class='ajaxbloc[ env-(#GET{env})][ cle-(#GET{cle})]'>
-(#INCLURE{fond=#ENV*{fond_ajax}}{env})
+<INCLURE{fond=#ENV*{fond_ajax}}{env} />
 </div><!-- ajaxbloc -->
-]
diff --git a/dist/fond/ajax_stat.html b/dist/fond/ajax_stat.html
index 3448fce469cc2cb9f3fc1cd5fc9347641ca08d46..c755588a0104819ef09af1e30af1feed38b11f6c 100644
--- a/dist/fond/ajax_stat.html
+++ b/dist/fond/ajax_stat.html
@@ -1,4 +1,8 @@
-[(#REM) calculer l'env et la cle pour le contexte du traitement ajax]
+[(#REM)
+
+	Traiter les # INCLURE {ajax}
+
+][(#REM) calculer l'env et la cle pour le contexte du traitement ajax]
 #SET{env,#ENV**|base64_encode}
 #SET{cle,#EVAL{#VAL{'include_spip("inc/securiser_action")?calculer_cle_action("'}|concat{#GET{env},'"):""'}}}
 [
diff --git a/dist/javascript/ajaxCallback.js b/dist/javascript/ajaxCallback.js
index b5c9f5872e32c2ab57d13287fde6f2ed81a5ec08..aa65bdd4f4d80c1b6075bf1d15a755eba7a9b1a4 100644
--- a/dist/javascript/ajaxCallback.js
+++ b/dist/javascript/ajaxCallback.js
@@ -164,13 +164,14 @@ jQuery.fn.ajaxbloc = function() {
 
 // Ajaxer les formulaires qui le demandent, au demarrage
 jQuery(function() {
-	jQuery('.ajax').formulaire_dyn_ajax();
+	jQuery('form').parents('.ajax')
+	.each(function(){$(this).formulaire_dyn_ajax();});
 	jQuery('.ajaxbloc').each(function(){$(this).ajaxbloc();});
 });
 // ... et a chaque fois que le DOM change
 onAjaxLoad(function() {
-	jQuery('.ajax', this)
-	.formulaire_dyn_ajax();
+	jQuery('form', this).parents('.ajax')
+	.each(function(){$(this).formulaire_dyn_ajax();});
 	jQuery('.ajaxbloc', this)
 	.each(function(){$(this).ajaxbloc();});
 });
diff --git a/ecrire/inc/extra.php b/ecrire/inc/extra.php
index 6589be1785a3fc505d89ff8bda2f88fec2fa18ac..b5bfc370a7d8317811bdbe134427f9e04199492b 100644
--- a/ecrire/inc/extra.php
+++ b/ecrire/inc/extra.php
@@ -89,6 +89,7 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 // a partir de la liste des champs, generer la liste des input
 // http://doc.spip.org/@extra_saisie
 function extra_saisie($extra, $table_objet, $ensemble='') {
+	include_spip('inc/presentation');
 	if ($affiche = extra_form($extra, $table_objet, $ensemble)) {
 		return debut_cadre_enfonce('',true)
 			. $affiche