diff --git a/controleurs/formulaires_reponses_champ.php b/controleurs/formulaires_reponses_champ.php
index 866fb495a565b51012f59ba7d2c0640f756bc3dc..b1432b0a16382454f27d56ca768718720ef3409b 100644
--- a/controleurs/formulaires_reponses_champ.php
+++ b/controleurs/formulaires_reponses_champ.php
@@ -12,19 +12,26 @@ function controleurs_formulaires_reponses_champ_dist($regs, $c = null) {
 	list(,$crayon, $type, $champ, $id) = $regs;
 	$id_formulaires_reponses_champ = $regs[4];
 
+	// Cas 1. On est sur un champ déjà enregistreé
+	if (strpos($id_formulaires_reponses_champ, 'new') === false) {
 	// Recuperer id_formulaires_reponse et id_formulaire
 	// Note, sans doute pourrait-on passer directement cela en classe
 	// Mais
 	// 1. Cela ferait une exception
 	// 2. Des gens utilisent peut être pas #VOIR_REPONSE{xxx,edit}
-	$data = sql_fetsel('*', 'spip_formulaires_reponses_champs JOIN spip_formulaires_reponses JOIN spip_formulaires', "id_formulaires_reponses_champ=$id_formulaires_reponses_champ AND spip_formulaires_reponses.id_formulaires_reponse = spip_formulaires_reponses_champs.id_formulaires_reponse AND spip_formulaires.id_formulaire = spip_formulaires_reponses.id_formulaire");
-	$id_formulaires_reponse = $data['id_formulaires_reponse'];
-
+		//
+		$data = sql_fetsel('saisies, nom, valeur', 'spip_formulaires_reponses_champs JOIN spip_formulaires_reponses JOIN spip_formulaires', "id_formulaires_reponses_champ=$id_formulaires_reponses_champ AND spip_formulaires_reponses.id_formulaires_reponse = spip_formulaires_reponses_champs.id_formulaires_reponse AND spip_formulaires.id_formulaire = spip_formulaires_reponses.id_formulaire");
+		$nom = $data['nom'];
+		$valeur = $data['valeur'];
+	} else {
+		$valeur = '';
+		preg_match('#new-(.*)-(.*)#', $id_formulaires_reponses_champ, $match);
+		$nom = $match[1];
+		$id_formulaires_reponse = $match[2];
+		$data = sql_fetsel('saisies', 'spip_formulaires_reponses JOIN spip_formulaires', "id_formulaires_reponse=$id_formulaires_reponse  AND spip_formulaires.id_formulaire = spip_formulaires_reponses.id_formulaire");
+	}
 
-	$nom = $data['nom'];
-	$valeur = $data['valeur'];
 	$saisie = saisies_chercher(unserialize($data['saisies']), $nom);
-	$valeur = $data['valeur'];
 
 	$n = new Crayon(
 		$type . '-valeur-' . $id_formulaires_reponses_champ,
diff --git a/formidable_fonctions.php b/formidable_fonctions.php
index 61ef535bd4e2fe5cd4e775b97b14beb251f342af..552ab1e5436592556e6eae68d81ab874d082666d 100644
--- a/formidable_fonctions.php
+++ b/formidable_fonctions.php
@@ -99,7 +99,12 @@ function calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $nom, $s
 
 	// Si on demande edit > mode crayon > on génère le crayon correspond
 	if ($type_retour == 'edit') {
-		return 'crayon '.'formulaires_reponses_champ-valeur-'. $reponses_valeurs[$id_formulaires_reponse][$nom]['id'];
+		if (isset($reponses_valeurs[$id_formulaires_reponse][$nom]['id'])) {
+			$valeur = $reponses_valeurs[$id_formulaires_reponse][$nom]['id'];
+		} else {
+			$valeur = "new-$nom-$id_formulaires_reponse";
+		}
+		return 'crayon '.'formulaires_reponses_champ-valeur-'. $valeur;
 	}
 	// Si on trouve bien la saisie demandée
 	if ($saisie = saisies_chercher($formulaires_saisies[$id_formulaire], $nom)) {