Code VBA: Vérifier si le fichier existe ou pas

VBA: vérifier si le fichier existe

En VBA, il est très simple de vérifier si un fichier existe. On peut utiliser une combinaison de deux fonctions VBA:   Len() et Dir().

La fonction Dir() retourne le nom du fichier testé si ce fichier existe (en tant qu'une chaîne de caractères – String). Si le fichier n'existe pas, la fonction retourne une chaîne vide.

On va ensuite tester avec la fonction Len() la longueur de ce résultat obtenu. La fonction Len() retourne comme résultat le nombre de caractères dans une chaîne de caractères. Dans notre cas, la conclusion est la suivante:

Si le résultat combiné de ces deux fonctions est  >0, le ficher existe. Dans le cas contraire, le fichier testé n'existe pas.

Et voici le code VBA  sous forme d'une fonction que vous pouvez utiliser tel quel dans votre projet et qui vous permettra de vérifier si le fichier existe ou pas…

Fonction VBA pour tester l’existence d’un fichier

La fonction suivante utilise un paramètre de type String ( nommé MonFichier ): le chemin complet vers le fichier (c'est à dire le chemin & le nom du fichier dont vous voulez tester l'existence.

Le résultat retourné par cette fonction est un Booléen: il correspond à une des valeurs suivantes: True (si le fichier existe) ou False (si le fichier n'existe pas).

Remarques:

  • Si la valeur du paramètre MonFichier est vide ou ="", la fonction retournera comme résultat False car un fichier sans chemin et sans nom n'existe pas
  • Si MonFichier contient uniquement le nom de fichier sans le chemin, la fonction vérifiera son existence dans le dossier actif
  • En cas de situation où le code ne peut pas vérifier si le fichier existe – ce qui arrive par exemple quand l'utilisateur n'a pas le droit d'accès à l'emplacement où doit se trouver le fichier en fonction – la fonction retournera l'erreur #REF! . Dans ce cas, vous serez au courant que la fonction ne peut ni confirmer, ni infirmer l'existence du fichier…

Exemple pratique de vérification de l’existence d’un fichier

Le code VBA qui suit illustre l'utilisation de la fonction FichierExiste dont le code se trouve plus haut. Il s'agit d'une simple procédure qui fait appel à la fonction FichierExiste pour vérifier l'existence du fichier "C:\Dossier_test\fichier_test.docx". Un message (MsgBox) est ensuite affiché avec le résultat de la vérification.

Attention, pour pouvoir faire fonctionner ce code, vous aurez besoin de copier les deux codes VBA dans votre projet: la fonction FichierExiste ET la procédure TestSiFichierExiste. Si vous voulez faire des tests, vous pouvez modifier le code de la procédure TestSiFichierExiste – le nom du fichier, l'action à exécuter au cas où le fichier existe (ou pas),… Le code de la fonction FichierExiste est générique et ne doit pas être modifié.

 

Pourquoi vérifier si le fichier existe?

Si votre but exact est de vérifier l'existence d'un fichier, la question ne se pose même pas. Par contre, vous pouvez utiliser ce test dans vos projets pour vérifier si les fichiers avec lesquels vous devez travailler existent. Pourquoi? On pourrait simplement dire qu'il s'agit d'une bonne pratique dans la programmation (peu importe le langage de programmation utilisé). Mais en réalité, la raison principale est simple: pour vous éviter des problèmes! À vous et aux autres.

En sachant si le fichier existe, vous pouvez inclure dans votre code l'action à effectuer si le fichier n'existe pas. Si, par exemple, vous essayez d'ouvrir un fichier qui n'existe pas, votre code VBA va se bloquer (si les erreurs ne sont pas gérées expressément). Par contre si vous savez en avance que le fichier n'existe pas, vous pouvez décider vous-même quoi faire (par exemple le copier à partir d'un autre endroit ou le créer directement) – et votre code VBA continuera à tourner sans problème.

Cela vous permet également de loguer l'activité et des éventuels problèmes lors de l'exécution de vos projets.

Et pour finir, il est parfois utile, avant de créer ou d'exporter un fichier de savoir si un fichier avec le même nom existe déjà. Vous pouvez alors directement décider dans votre code quelle sera la suite (changer nom, déplacer le fichier existant dans un autre dossier, etc.). Et c'est toujours mieux que d'écraser un fichier existant de votre collègue! 🙂

Pour aller plus loin en VBA

Vous venez de voir le code qui vous permettra de tester en VBA l'existence d'un fichier. Il est également possible de tester en VBA si un dossier existe.

 

Laissez un commentaire

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

11 commentaires sur “Code VBA: Vérifier si le fichier existe ou pas”