VBA: compresser et décompresser des fichiers Zip (mode d’emploi)

Zip et UnZip en VBA Excel - tutoriel

Besoin d'automatiser la compression ZIP et la décompression directement depuis Excel ou VBA ?
Voici des codes VBA prêts à l'emploi pour créer un Zip, ajouter des fichiers, déplacer des fichiers dans un Zip existant et extraire une archive.
On s'appuie sur le mécanisme ZIP intégré à Windows (Shell.Application) : pas d'outil externe à installer pour les cas simples.

C'est pratique pour sauvegarder des rapports, joindre des pièces plus légères à un e-mail, ou archiver automatiquement des exports à la fin d'un traitement.

02/10/2025 – Mise à jour : texte enrichi (conseils, cas multi-fichiers et dossier entier), FAQ ajoutée, liens internes et rappel compatibilité Windows.

Important : ces macros utilisent des composants système de Windows.
Non compatibles Mac. Pour des besoins avancés (très gros volumes, chiffrement, performances), pensez à des alternatives comme 7-Zip (via ligne de commande) ou PowerShell.

Archiver/compresser un fichier avec VBA

Ceci est le code VBA de base : on crée une archive si besoin (en écrivant un entête minimal), puis on copie le fichier dedans.
Par défaut, si l'archive existe déjà, on la recrée.

Conseils pratiques

  • La copie via CopyHere est asynchrone. L'opération continue en arrière-plan ; laissez quelques secondes pour les gros fichiers (un DoEvents ou une Wait courte peut être utile).
  • Vérifiez l'existence des chemins (archive, source) avant de lancer la copie pour éviter des erreurs inutiles.
  • Évitez de zipper des fichiers ouverts/verrouillés.

Copier un fichier vers un archive existant

Ici, on ajoute un fichier à un zip existant. Le fichier original reste à sa place.

Déplacer un fichier vers un archive existant

Variante précédente : on déplace le fichier dans le zip. Le fichier n'existe plus à l'emplacement d'origine.

Décompresser le contenu d'un archive Zip avec VBA

Voici le code pour extraire tous les fichiers d'un zip vers un dossier.
L'archive d'origine n'est pas supprimée.

Attention : si le chemin du dossier cible ne se termine pas par “\”, on l'ajoute pour éviter des soucis de chemin.

Compresser plusieurs fichiers en une fois

Pour compresser une liste de fichiers, bouclez tout simplement sur vos chemins.
Ici, on crée l'archive si besoin puis on y ajoute chaque fichier.

Compresser un dossier entier

Besoin d'archiver tout le contenu d'un dossier (et éventuellement ses sous-dossiers) ?
On peut s'appuyer sur le namespace Shell du dossier pour pousser son contenu dans l'archive.

Bonnes pratiques

  • Ajoutez des contrôles d'existence (dossier, fichiers) pour sécuriser le flux.
  • Pour de très gros lots, prévoyez de petites pauses (Application.Wait ou boucles avec DoEvents).
  • Si vous avez besoin de chiffrer le zip ou de performances supérieures, privilégiez 7-Zip (CLI) ou PowerShell.

FAQ – VBA et fichiers Zip

FAQ: questions fréquentes sur la compression Zip avec VBA
VBA permet-il de gérer les fichiers Zip nativement ?
Pas directement. Ici, on exploite l’objet Windows Shell.Application qui offre des fonctions de compression/décompression.

Est-ce que ce code marche sur Mac ?
Non. Ces macros fonctionnent uniquement sous Windows, car elles s’appuient sur les bibliothèques système de Windows.

Puis-je compresser plusieurs fichiers en même temps ?
Oui, il suffit d’adapter la macro en bouclant sur une liste de fichiers à ajouter dans l’archive.

Quelle est la différence entre copier et déplacer un fichier dans un Zip ?
Avec la copie, le fichier original reste en place. Avec le déplacement, le fichier d’origine disparaît et n’existe plus que dans l’archive Zip.

Comment gérer un dossier complet en VBA ?
Vous pouvez combiner ces macros avec les fonctions VBA qui copient des dossiers pour ajouter automatiquement tout le contenu dans l’archive.

Aller plus loin (alternatives et ressources)

  • Utiliser 7-Zip via ligne de commande : robuste et rapide (site officiel).
  • Scripts PowerShell pour zip/unzip : pratiques dans des jobs planifiés.
  • Exemples et variantes chez Ron de Bruin (en anglais).

Liens utiles (VBA & fichiers)


Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

16 commentaires sur “VBA: compresser et décompresser des fichiers Zip (mode d’emploi)”