diff --git a/base/formidable_tables.php b/base/formidable_tables.php
index d88710ae7ec5973b8872935cb1d28967b86032c6..c0d4c44c3ee6ebd087a38129c636a3c5f2ae1eec 100644
--- a/base/formidable_tables.php
+++ b/base/formidable_tables.php
@@ -132,7 +132,7 @@ function formidable_declarer_tables_objets_sql($tables) {
 			'ip' => "varchar(255) NOT NULL default ''",
 			'id_auteur' => 'bigint(21) NOT NULL default 0',
 			'cookie' => "varchar(255) NOT NULL default ''",
-			'variable_php' => 'bigint(21) NOT NULL default 0',
+			'variable_php' => "varchar(255) NOT NULL default ''",
 			'statut' => "varchar(10) NOT NULL default ''",
 			'maj' => 'timestamp'
 		),
diff --git a/formidable_administrations.php b/formidable_administrations.php
index 796f380f1a39e6e988c1a0337e14293740690d85..c13ffe877a9a3de99d1fb7569d4391d4a372b39a 100644
--- a/formidable_administrations.php
+++ b/formidable_administrations.php
@@ -101,6 +101,9 @@ function formidable_upgrade($nom_meta_base_version, $version_cible) {
 	$maj['0.15.0'] = array(
 		array('formidable_effacer_traitement_enregistrer_sans_option')
 	);
+	$maj['0.17.1'] = array(
+		array('sql_alter','TABLE spip_formulaires_reponses CHANGE variable_php variable_php VARCHAR(255) NOT NULL default ""')
+	);
 	include_spip('base/upgrade');
 	maj_plugin($nom_meta_base_version, $version_cible, $maj);
 }
diff --git a/formidable_autorisations.php b/formidable_autorisations.php
index bbadf759fcc651adbc59584f9a43baa5f7c39406..cdb81a7f70faf4a37a73315ffd1a52097f31378f 100644
--- a/formidable_autorisations.php
+++ b/formidable_autorisations.php
@@ -172,7 +172,7 @@ function autoriser_formulaire_repondre_dist($faire, $type, $id, $qui, $opt) {
 			} else {
 				include_spip('inc/formidable');
 				// Si la personne n'a jamais répondu, c'est bon
-				if (!formidable_verifier_reponse_formulaire($id, $traitements['enregistrement']['identification'], $traitements['enregistrement']['variable_php'])) {
+				if (!formidable_verifier_reponse_formulaire($id, $traitements['enregistrement']['identification'], $traitements['enregistrement']['variable_php'], $traitements['enregistrement']['anonymiser'])) {
 					return true;
 				} else {
 					return false;
diff --git a/inc/formidable.php b/inc/formidable.php
index 24cf143d8ba886e1778d03f035e3dbef1afc5b58..a3c2f46dedf453024942ec5ae6a3026393a6fb33 100644
--- a/inc/formidable.php
+++ b/inc/formidable.php
@@ -149,9 +149,10 @@ function formidable_trouver_reponse_a_editer($id_formulaire, $id_formulaires_rep
  * @param int $id_formulaire L'identifiant du formulaire
  * @param string $choix_identification Comment verifier une reponse. Priorite sur 'cookie' ou sur 'id_auteur'
  * @param string $variable_php_identification : la variable php servant à identifier une réponse
+ * @param string $anonymiser : si 'on', le formulaire doit-être anonymisé
  * @return unknown_type Retourne un tableau contenant les id des réponses si elles existent, sinon false
  */
-function formidable_verifier_reponse_formulaire($id_formulaire, $choix_identification = 'cookie', $variable_php_identification = '') {
+function formidable_verifier_reponse_formulaire($id_formulaire, $choix_identification = 'cookie', $variable_php_identification = '', $anonymiser='') {
 	global $auteur_session;
 	$id_auteur = $auteur_session ? intval($auteur_session['id_auteur']) : 0;
 	$nom_cookie = formidable_generer_nom_cookie($id_formulaire);
@@ -163,13 +164,17 @@ function formidable_verifier_reponse_formulaire($id_formulaire, $choix_identific
 		return false;
 	}
 
-
 	// Determiner les différentes clauses $WHERE possible en fonction de ce qu'on a
 	$where_id_auteur = '';
 	$where_cookie = '';
 	$where_variable_php = '';
 	if ($id_auteur) {
-		$where_id_auteur = 'id_auteur='.$id_auteur;
+		if ($anonymiser == 'on') {
+			$id_auteur = formidable_crypter_id_auteur($id_auteur);
+			$where_id_auteur = 'variable_php="'.$id_auteur.'"';
+		} else {
+			$where_id_auteur = 'id_auteur='.$id_auteur;
+		}
 	}
 	if ($cookie) {
 		$where_cookie = 'cookie='.sql_quote($cookie);
@@ -189,7 +194,7 @@ function formidable_verifier_reponse_formulaire($id_formulaire, $choix_identific
 		if ($id_auteur) {
 			$where = array($where_id_auteur);
 		} else {
-			$where = array($where_cookie, $where_variable_php);
+			$where = array($where_cookie);
 		}
 	} elseif ($choix_identification == 'variable_php') {
 		if ($variable_php_identification) {
@@ -596,3 +601,14 @@ function formidable_variable_php_identification($nom_variable, $id_formulaire) {
 	}
 	return $valeur_variable;
 }
+
+/**
+ * Retourne une valeur crypté de l'id_auteur.
+ * @param string $id_auteur
+ * @return string
+ */
+function formidable_crypter_id_auteur($id_auteur="") {
+	include_spip('inc/securiser_action');
+	$pass = secret_du_site();
+	return md5($pass.$id_auteur);
+}
diff --git a/paquet.xml b/paquet.xml
index 7ebfa2b95a76703bb49fbdf48a276c4b69b60741..8bf0b31e836b228a0a55989cf238b46eaf561ecb 100644
--- a/paquet.xml
+++ b/paquet.xml
@@ -1,11 +1,11 @@
 <paquet
 	prefix="formidable"
 	categorie="communication"
-	version="3.46.8"
+	version="3.47.1"
 	etat="stable"
 	compatibilite="[3.0.0;3.2.*]"
 	logo="images/formidable-64.png"
-	schema="0.15.0"
+	schema="0.17.1"
 	documentation="https://contrib.spip.net/Formidable-le-generateur-de-formulaires"
 >
 	<nom>Formidable</nom>
diff --git a/traiter/enregistrement.php b/traiter/enregistrement.php
index f70917f42d0bb7697957375efeaeccef598427fb..c516d5725da182be87ec5fec963fb8e8b28e5cf6 100644
--- a/traiter/enregistrement.php
+++ b/traiter/enregistrement.php
@@ -19,8 +19,11 @@ function traiter_enregistrement_dist($args, $retours) {
 	$id_auteur = isset($GLOBALS['visiteur_session']) ? (isset($GLOBALS['visiteur_session']['id_auteur']) ?
 		$GLOBALS['visiteur_session']['id_auteur'] : 0) : 0;
 
-	// traitement de l'anonymisation
+	// traitement de l'anonymisation de l'auteur lorsque la méthode d'identification se fait par l'identifiant
 	if ($options['anonymiser'] == 'on' and $id_auteur) {
+		if ($options['identification'] == 'id_auteur' ) {
+			$variable_php = formidable_crypter_id_auteur($id_auteur);
+		}
 		$id_auteur = 0;
 	}
 
@@ -32,8 +35,11 @@ function traiter_enregistrement_dist($args, $retours) {
 		include_spip('inc/acces');
 		$cookie = creer_uniqid();
 	}
+
 	// On crée un identifiant depuis l'éventuelle variable php d'identification
-	$variable_php = formidable_variable_php_identification($options['variable_php'], $id_formulaire);
+	if ($options['identification'] == 'variable_php' ) {
+		$variable_php = formidable_variable_php_identification($options['variable_php'], $id_formulaire);
+	}
 
 	// On regarde si c'est une modif d'une réponse existante
 	$id_formulaires_reponse = $args['id_formulaires_reponse'];
diff --git a/traiter/enregistrement.yaml b/traiter/enregistrement.yaml
index d9472fb54a4868f891826ce6adec07082dec6471..280eb3ea7199981d4f4f5896fa688614dc7dd82d 100644
--- a/traiter/enregistrement.yaml
+++ b/traiter/enregistrement.yaml
@@ -111,7 +111,6 @@ options:
           label_case: '<:formidable:traiter_enregistrement_option_anonymiser_label:>'
           defaut: ''
           li_class: 'pleine_largeur'
-          afficher_si: '!(@traitements[enregistrement][identification]@ == "id_auteur" && @traitements[enregistrement][multiple]@!="on" || @traitements[enregistrement][modifiable]@=="on")'
       -
         saisie: 'case'
         options: