diff --git a/CHANGELOG.md b/CHANGELOG.md
index fc4d57e77c92b2e85f39c53b38d9c2d6673d74fd..e28c45bc8260b0dea836b5bd46019dac46fa20dc 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4,6 +4,7 @@
 ### Fixed
 
 - #123 Faire fonctionner l'analyse des réponses pour une saisie `choix_grille` lorsque les clés sont numériques
+- #127 Zipper correctement les fichiers d'un type non autorisé par SPIP
 
 ## [5.2.2] - 2022-08-20
 
diff --git a/inc/formidable_fichiers.php b/inc/formidable_fichiers.php
index 7e4f05fd2bab4f79d4b2dcaa024f0b0d790f6920..7500e9057ed580d4aad9409e7d07399be4a3bd05 100644
--- a/inc/formidable_fichiers.php
+++ b/inc/formidable_fichiers.php
@@ -238,8 +238,8 @@ function formidable_deplacer_fichier_emplacement_definitif($fichier, $nom, $mime
 			return '';
 		}
 	} else { // si on doit zipper, c'est plus complexe
-		include_spip('inc/pclzip');
-		$zip = new PclZip($chemin_final);
+		include_spip('inc/archives');
+		$zip = new  Spip\Archiver\SpipArchiver($chemin_final);
 		// mettre à jour le fichier dans le dossier cvtupload
 		if (!$tmp_dir = tempnam($dossier_champ, 'tmp_upload')) {
 			return '';
@@ -250,14 +250,7 @@ function formidable_deplacer_fichier_emplacement_definitif($fichier, $nom, $mime
 			spip_log("Pb lors de l'enregistrement du fichier $tmp_dir/$nom_dans_zip", 'formidable'._LOG_ERREUR);
 			return '';
 		}
-		$zip_final = $zip -> create(
-			$fichier_tmp,
-			PCLZIP_OPT_REMOVE_PATH,
-			$tmp_dir,
-			PCLZIP_OPT_ADD_PATH,
-			''
-		);
-		if (!$zip_final) {
+		if (!$zip->emballer([$fichier_tmp], $tmp_dir)) {
 			spip_log("Pb lors de l'enregistrement du fichier $fichier", 'formidable'._LOG_ERREUR);
 			return '';
 		} else {