VBA: Vérifier si le fichier existe 4


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 qu'il vous faudra pour 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): le chemin complet vers le fichier.

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

Public Function FichierExiste(MonFichier as String)
'par Excel-Malin.com ( https://excel-malin.com )

   If Len(Dir(MonFichier)) > 0 Then
      FichierExiste = True
   Else
      FichierExiste = False
   End If
End Function

 

Exemple 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.

Sub TesteSiFichierExiste()
'par Excel-Malin.com ( https://excel-malin.com )

Dim MonFichier As String

MonFichier = "C:\Dossier_test\fichier_test.docx"

    If FichierExiste(MonFichier) = True Then
        MsgBox "Le fichier existe..."
    Else
        MsgBox "Le fichier n'existe pas..."
    End If

End Sub

 

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!

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 expréssement). 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) – 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 de surécrire un fichier existant de votre collègue 🙂 .

Pour aller plus loin

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.

 

39 0



Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.

4 commentaires sur “VBA: Vérifier si le fichier existe

  • Marc

    J'utilise ce code depuis quelques mois et je vous en remercie.
    Aujourd'hui, je n'arrive pas à l'appliquer à un nouveau fichier et je ne vois ce qui cloche.

    J'ai ce message :
    "Erreur d'exécution '52:
    Nom ou numéro de fichier incorrect"

    Et dans mon Module, cette ligne est surlignée en mode débogage :
    " If Len(Dir(MonFichier)) > 0 Then"

    Avez-vous déjà rencontré le problème ?

    Voilà le code de ma macro où MonFichier est utilisé :
    "Dim MonFichier As String
    MonFichier = CHEMIN_BILAN_A
    If FichierExiste(MonFichier) = False Then
    MsgBox "Accès au fichier impossible." & vbCr & "Veuillez vérifier l'existence du fichier et la justesse de son chemin d'accès : " & vbCr & vbCr & CHEMIN_BILAN_A, vbOKOnly + vbExclamation, "ANOMALIE DÉTECTÉE"
    Else
    If FichOuvert(BILAN_A) Then
    ' Ne rien faire
    Else
    Workbooks.Open Filename:= _
    CHEMIN_BILAN_A _
    , UpdateLinks:=3, ReadOnly:=True
    ActiveWindow.Visible = False
    End If
    End If

  • Don pépé

    Bonjour,
    Petite info si vous chercher un fichier qui est cacher sa retourne FALSE pour pallier à sa remplacer :
    If Len(Dir(MonFichier)) > 0 Then
    par
    If Len(Dir(MonFichier, vbDirectory + vbHidden)) > 0 Then

    Cordialement 😉