diff --git a/formulaires/inc-lister_archive_jointe.html b/formulaires/inc-lister_archive_jointe.html
index 6f8a7b917fa2b7e21d53d4194225e04b44143011..fb6e273828ecbc04292a493414a2a0cc648b6c5b 100644
--- a/formulaires/inc-lister_archive_jointe.html
+++ b/formulaires/inc-lister_archive_jointe.html
@@ -27,10 +27,6 @@
 						<input type='checkbox' name='options_deballe_zip_titrer' id='options_deballe_zip_titrer' value='1' />
 						<label for='options_deballe_zip_titrer'><:medias:upload_zip_titrer:></label>
 					</div>
-					<div class='choix'>
-						<input type='checkbox' name='options_deballe_zip_mode_document' id='options_deballe_zip_mode_document' value='1' />
-						<label for='options_deballe_zip_mode_document'><:medias:upload_zip_mode_document:></label>
-					</div>
 				</div>
 			</div>
 		</div>]
diff --git a/inc/joindre_document.php b/inc/joindre_document.php
index 6b94fc5cd06428477a3c8e9e6d9b0317f66b7f70..b129cf8738ecd775da4191b1e9fdcc230e5ed422 100644
--- a/inc/joindre_document.php
+++ b/inc/joindre_document.php
@@ -243,10 +243,11 @@ function joindre_verifier_zip($files) {
 		);
 
 		// Est-ce qu'on sait le lire ?
-		include_spip('inc/pclzip');
+		include_spip('inc/archives');
 		if ($zip
-			and $archive = new PclZip($zip)
-			and $contenu = joindre_decrire_contenu_zip($archive)
+			and $archive = new Spip\Archives\SpipArchives($zip)
+			and $infos = $archive->informer()
+			and $contenu = joindre_decrire_contenu_zip($infos)
 			and $tmp = sous_repertoire(_DIR_TMP, 'zip')
 			and rename($zip, $tmp = $tmp . basename($zip))
 		) {
@@ -272,18 +273,18 @@ function joindre_verifier_zip($files) {
  * @param object $zip
  * @return array
  */
-function joindre_decrire_contenu_zip($zip) {
+function joindre_decrire_contenu_zip($infos) {
 	include_spip('action/ajouter_documents');
 	// si pas possible de decompacter: installer comme fichier zip joint
-	if (!$list = $zip->listContent()) {
+	if (empty($infos['fichiers'])) {
 		return false;
 	}
 
 	// Verifier si le contenu peut etre uploade (verif extension)
 	$fichiers = array();
 	$erreurs = array();
-	foreach ($list as $file) {
-		if (accepte_fichier_upload($f = $file['stored_filename'])) {
+	foreach ($infos['fichiers'] as $file) {
+		if (accepte_fichier_upload($f = $file['filename'])) {
 			$fichiers[$f] = $file;
 		} else // pas de message pour les dossiers et fichiers caches
 		{
@@ -306,28 +307,26 @@ function joindre_decrire_contenu_zip($zip) {
 
 // https://code.spip.net/@joindre_deballes
 function joindre_deballer_lister_zip($path, $tmp_dir) {
-	include_spip('inc/pclzip');
-	$archive = new PclZip($path);
-	$archive->extract(
-		PCLZIP_OPT_PATH,
-		$tmp_dir,
-		PCLZIP_CB_PRE_EXTRACT,
-		'callback_deballe_fichier'
-	);
-	if ($contenu = joindre_decrire_contenu_zip($archive)) {
-		$files = array();
+	include_spip('inc/archives');
+	$archive = new Spip\Archives\SpipArchives($path);
+
+	if ($infos = $archive->informer()
+	  and $contenu = joindre_decrire_contenu_zip($infos)) {
 		$fichiers = reset($contenu);
-		foreach ($fichiers as $fichier) {
-			$f = basename($fichier['filename']);
-			$files[] = array(
-				'tmp_name' => $tmp_dir . $f,
-				'name' => $f,
-				'titrer' => _request('options_deballe_zip_titrer'),
-				'mode' => _request('options_deballe_zip_mode_document') ? 'document' : null
-			);
+		$fichiers = array_column($fichiers, 'filename');
+		if ($archive->deballer($tmp_dir, $fichiers)) {
+			$files = [];
+			foreach ($fichiers as $fichier) {
+				$f = basename($fichier);
+				$files[] = array(
+					'tmp_name' => $tmp_dir . $fichier,
+					'name' => $f,
+					'titrer' => _request('options_deballe_zip_titrer'),
+					'mode' => null
+				);
+			}
+			return $files;
 		}
-
-		return $files;
 	}
 
 	return _T('avis_operation_impossible');
@@ -339,8 +338,8 @@ if (!function_exists('fixer_extension_document')) {
 	 * et corrige le nom du fichier ; retourne array(extension, nom corrige)
 	 * s'il ne trouve pas, retourne '' et le nom inchange
 	 *
-	 * @param unknown_type $doc
-	 * @return unknown
+	 * @param array $doc
+	 * @return array
 	 */
 // https://code.spip.net/@fixer_extension_document
 	function fixer_extension_document($doc) {
@@ -366,11 +365,13 @@ if (!function_exists('fixer_extension_document')) {
 	}
 }
 
-//
-// Gestion des fichiers ZIP
-//
-// https://code.spip.net/@accepte_fichier_upload
-
+/**
+ * Gestion des fichiers ZIP
+ * https://code.spip.net/@accepte_fichier_upload
+ *
+ * @param sring $f
+ * @return bool|int
+ */
 function accepte_fichier_upload($f) {
 	if (!preg_match(',.*__MACOSX/,', $f)
 		and !preg_match(',^\.,', basename($f))
@@ -385,16 +386,3 @@ function accepte_fichier_upload($f) {
 	}
 }
 
-# callback pour le deballage d'un zip telecharge
-# http://www.phpconcept.net/pclzip/man/en/?options-pclzip_cb_pre_extractfunction
-// https://code.spip.net/@callback_deballe_fichier
-
-function callback_deballe_fichier($p_event, &$p_header) {
-	if (accepte_fichier_upload($p_header['filename'])) {
-		$p_header['filename'] = _TMP_DIR . basename($p_header['filename']);
-
-		return 1;
-	} else {
-		return 0;
-	}
-}