VBA ne sert pas uniquement à automatiser des tâches à l'intérieur d'Excel. Comme il s'agit de langage de script de Windows, il est également possible de l'utiliser pour manipuler des fichiers. Il est donc possible de copier des fichiers en VBA, de les effacer, les déplacer ou les renommer.
Dans ce tutoriel, vous pouvez apprendre à utiliser les manipulations de base avec des fichiers en VBA.
Sommaire
Vérifier si un fichier existe en VBA
Commençons par le commencement… Pour éviter des erreurs lors de la manipulation d'un fichier, il est intéressant de savoir si le fichier en question existe ou pas. De plus, dans certaines situations, on a tout simplement besoin de savoir si le fichier existe. Pour cela, on peut utiliser le code suivant qui est assez simple et qui utilise les fonctions VBA Len et Dir :
1 2 3 4 5 |
MonFichier = "C:\Test\FichierTest.xlsx" FichierExiste = Len(Dir(MonFichier) 'si FichierExiste = 0, le fichier n'existe pas 'si FichierExiste <> 0, le fichier existe |
Pour plus d'informations et explications à ce sujet, vous pouvez consulter la page VBA: Vérifier si le fichier existe .
Copier un fichier en VBA
Il est très simple d'utiliser VBA pour copier des fichiers. Il suffit d'avoir les deux noms et emplacements du fichier (l'origine et la destination). Vous pouvez changer la destination du fichier (le dossier), le nom du fichier ou les deux.
1) Exemple de copie d'un fichier dans le même dossier (donc en fait de création d'une copie avec un nom de fichier différent dans le même dossier):
1 2 3 4 5 6 7 8 9 10 |
'copier un fichier (une copie avec le nom différent, dans le même dossier) Dim FichierOriginal As String Dim FichierCopie As String MonDossier = "C:\Test\" FichierOriginal = MonDossier & "MonFichier.txt" FichierCopie = MonDossier & "MonFichier2.txt" FileCopy FichierOriginal, FichierCopie |
2) Exemple de copie vers en autre dossier en gardant le même nom du fichier:
1 2 3 4 5 6 7 8 |
'copier fichier (nom reste le même, emplacement différent) Dim FichierOriginal As String Dim FichierCopie As String FichierOriginal = "C:\Test\MonFichier.txt" FichierCopie = "C:\Archive\MonFichier.txt" FileCopy FichierOriginal, FichierCopie |
3) Exemple de copie vers en autre dossier en changeant le nom du fichier en même temps:
1 2 3 4 5 6 7 8 |
'copier fichier (nom différent, emplacement différent) Dim FichierOriginal As String Dim FichierCopie As String FichierOriginal = "C:\Test\MonFichier.txt" FichierCopie = "C:\Archive\MonFichier_archive.txt" FileCopy FichierOriginal, FichierCopie |
Attention: si vous essayez de copier un fichier qui est ouvert, l'opération se terminera par une erreur.
Et sachez que vous n'êtes pas obligés de passer par des variables. Les indications de fichiers peuvent être mentionnés directement dans la fonction FileCopy .
Exemple:
1 |
FileCopy "C:\Test\MonFichier.txt", "C:\Archive\MonFichier_archive.txt" |
Supprimer un fichier en VBA
Pour supprimer un fichier avec VBA, on peut utiliser la commande Kill.
Attention, cette action est irréversible et doit être utilisée avec précaution! Si vous effacez des fichiers avec VBA, ils ne vont pas dans la Corbeille. Ils sont effacés directement.
1 2 3 4 |
Dim FichierASupprimer As String FichierASupprimer = "C:\Test\MonFichier.docx" Kill FichierASupprimer |
… ou bien en une seule ligne de code (moins flexible mais plus concis – à vous de voir quelle variante vous convient le mieux):
1 |
Kill "C:\Test\MonFichier.docx" |
Déplacer ou renommer des fichiers en VBA
C'est grâce à la déclaration Name que l'on peut renommer ou déplacer un fichier en VBA. Les deux opérations, renommer et déplacer, sont, de point de vue technique, équivalentes. Soit on change de nom, soit de l'emplacement (soit les deux). Voici le code VBA à utiliser:
1 |
Name AncienNom As NouveauNom |
Et voici des exemples pour montrer comment l'utiliser:
… pour renommer un fichier (fichier reste au même endroit):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Sub RenommerUnFichier() 'renommer un fichier Dim AncienNom As String Dim NouveauNom As String MonDossier = "C:\Test\" AncienNom = MonDossier & "MonFichier.txt" NouveauNom = MonDossier & "MonFichier2.txt" Name AncienNom As NouveauNom End Sub |
… pour déplacer un fichier (on le déplace d'un dossier vers un autre en gardant son nom):
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub DeplacerUnFichier() 'déplacer un fichier Dim FichierOriginal As String Dim FichierDeplace As String FichierOriginal = "C:\Test\MonFichier.txt" FichierDeplace = "X:\MesSauvegardes\MonFichier.txt" Name FichierOriginal As FichierDeplace End Sub |
… et pour finir, les deux opérations combinés: on déplace un fichier et on change directement son nom:
1 2 3 4 5 6 7 8 9 10 11 12 |
Sub DeplacerUnFichier() 'déplacer un fichier Dim FichierOriginal As String Dim FichierDeplace As String FichierOriginal = "C:\Test\MonFichier.txt" FichierDeplace = "X:\MesSauvegardes\MonFichier_Archive.txt" Name FichierOriginal As FichierDeplace End Sub |
Compresser et décompresser des fichiers en VBA (via WinZip)
Si vous avez besoin de compresser/archiver des fichiers ou, au contraire, décompresser un archive .zip
, c'est aussi possible en VBA. Voici les codes sources VBA dont vous aurez besoin…
Très pratique pour l'automatisation des archivages !
Conclusion de ce tutoriel
En conclusion, les exemples de code présentés dans ce tutoriel fournissent les outils essentiels pour réaliser des opérations basiques de manipulation de fichiers au sein de vos applications et macros VBA. Grâce à l'association de ces commandes avec des structures de contrôle, telles que les boucles, vous pouvez exploiter toute la puissance d'Excel et VBA pour gérer efficacement un grand nombre de fichiers simultanément.
Ainsi, l'application de ces techniques dépend entièrement de vos besoins spécifiques et de votre capacité à innover et à concevoir des solutions personnalisées. N'hésitez pas à approfondir vos connaissances en VBA (voir les ressources dans la section suivante) et à explorer d'autres fonctionnalités pour tirer pleinement parti de son potentiel dans vos projets.
Pour aller plus loin en VBA
Et voici d'autres articles qui pourraient vous intéresser si vous avez besoin de travailler avec des fichiers en Excel et/ou en VBA.
- Trouver la taille d’un fichier en VBA
- VBA: Sauvegarder un texte dans un fichier
- Utiliser VBA pour télécharger un fichier de l’internet
- VBA: vérifier si un Classeur est ouvert
- Comment utiliser RECHERCHEV en VBA
- Envoyer un email avec VBA
Et pour finir, n'oubliez pas de consulter la liste de toutes les fonctions en VBA et de voir la section "Téléchargements" pour voir ce qui est possible de faire avec du VBA…
4 commentaires sur “Manipulation basique des Fichiers en VBA (copie, suppression,…)”
WOW! Merci…
Super, Merci, c'est tout ce que je recherchais !
Bien structuré et compréhensible. Dans la manipulation de fichier, comment peut-on ajuster les métadonnées du fichier; ex.: mettre la méta donnée "Mots-clés" d'un fichier JPEG ou "Date de prise de vue" selon des valeurs sélectionnées programatiquement.
ce n'est pas juste SUPER, c'est un tuto MAJUSCULE, de l'avis d'une professionnelle