Manipulation basique des fichiers en VBA 1


VBA ne sert pas seulement à 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.

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 :

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):

'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:

'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:

'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:

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.

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):

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:

Name AncienNom As NouveauNom

Et voici des exemples pour montrer comment l'utiliser:

… pour renommer un fichier (fichier reste au même endroit):

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):

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:

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

Ces codes sources devrait vous permettre d'effectuer les manipulations de base des fichiers dans vos applications/macros en VBA. En associant ces commandes à des boucles, il est possible d'utiliser Excel et VBA pour gérer des fichiers en masse. L'utilisation ne dépend que de vos besoins et de votre créativité!

 

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.

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…

86 0

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.

Commentaire sur “Manipulation basique des fichiers en VBA