diff --git a/paquet.xml b/paquet.xml
index 021ae1a365b97761cd7b98ee33ababf5af9989e0..738df5467b53b6d3dcd88b66bc2ea0a7f31608d1 100644
--- a/paquet.xml
+++ b/paquet.xml
@@ -1,7 +1,7 @@
 <paquet
 	prefix="formidable"
 	categorie="communication"
-	version="4.0.2"
+	version="4.0.3"
 	etat="stable"
 	compatibilite="[3.1.0;3.2.*]"
 	logo="images/formidable-64.png"
diff --git a/traiter/enregistrement.php b/traiter/enregistrement.php
index d3d617d986f4e0ec6ffc9700e2e8330290657286..7b43db96aac2b5ad05bf395fdf923173d973ab58 100644
--- a/traiter/enregistrement.php
+++ b/traiter/enregistrement.php
@@ -127,12 +127,14 @@ function traiter_enregistrement_dist($args, $retours) {
 		}
 		// S'il y a bien des choses à modifier
 		if ($champs) {
-			// On supprime d'abord les champs
+			// On supprime d'abord TOUT les champs, y compris ceux qui ne viennent pas d'être envoyé.
+			// En effet, ils pouvaient y avoir des champs remplis lors du précédent enregistrement
+			// Qui ne le sont plus au nouvel enregistrement, car la condition d'affichage (afficher_si) n'est plus remplie
+			// Dans ce cas il ne faut pas qu'ils continuent à être stockés en base, car cela peut fausser les affichages divers (type tableaux et autres)
 			sql_delete(
 				'spip_formulaires_reponses_champs',
 				array(
-					'id_formulaires_reponse = '.$id_formulaires_reponse,
-					sql_in('nom', $champs)
+					'id_formulaires_reponse = '.$id_formulaires_reponse
 				)
 			);