diff --git a/controleurs/formulaires_reponses_champ.php b/controleurs/formulaires_reponses_champ.php
index b1432b0a16382454f27d56ca768718720ef3409b..866fb495a565b51012f59ba7d2c0640f756bc3dc 100644
--- a/controleurs/formulaires_reponses_champ.php
+++ b/controleurs/formulaires_reponses_champ.php
@@ -12,26 +12,19 @@ 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('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");
-	}
+	$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'];
+
 
+	$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 552ab1e5436592556e6eae68d81ab874d082666d..c0c317a521e0854844b434bcbf1ece1eded334ae 100644
--- a/formidable_fonctions.php
+++ b/formidable_fonctions.php
@@ -102,7 +102,7 @@ function calculer_voir_reponse($id_formulaires_reponse, $id_formulaire, $nom, $s
 		if (isset($reponses_valeurs[$id_formulaires_reponse][$nom]['id'])) {
 			$valeur = $reponses_valeurs[$id_formulaires_reponse][$nom]['id'];
 		} else {
-			$valeur = "new-$nom-$id_formulaires_reponse";
+			$valeur = sql_insertq('spip_formulaires_reponses_champs', array('id_formulaires_reponse' => $id_formulaires_reponse, 'nom' => $nom));
 		}
 		return 'crayon '.'formulaires_reponses_champ-valeur-'. $valeur;
 	}