Vérifier si un fichier existe à l'aide de VBA

Glen Alfaro 30 janvier 2023
  1. Utilisez la fonction Dir() pour vérifier si le fichier existe sur l’ordinateur à l’aide de VBA
  2. Introduction de caractères génériques dans la fonction Dir() pour vérifier si un fichier / S existe sur votre ordinateur à l’aide de VBA
  3. Obtenir/compter tous les noms qui existent sur l’ordinateur à l’aide de VBA
Vérifier si un fichier existe à l'aide de VBA

VBA est un langage de programmation informatique puissant, en particulier lorsqu’il s’agit de développement de logiciels de bureau. L’une des prouesses de VBA est sa capacité à communiquer et à manipuler des fichiers sur l’ordinateur.

Ce tutoriel montrera comment vérifier si un certain fichier existe dans un certain chemin. C’est une logique incontournable typique, en particulier lorsqu’il s’agit d’accéder ou de manipuler des fichiers.

Il est recommandé de vérifier si un fichier existe avant d’aller plus loin. C’est pour éviter que des erreurs système ne se produisent, ce qui entraînerait le blocage de l’ensemble du programme.

Utilisez la fonction Dir() pour vérifier si le fichier existe sur l’ordinateur à l’aide de VBA

Le bloc de code ci-dessous montre comment vérifier si un fichier existe à l’aide de la fonction Dir(). La fonction Dir() est un outil puissant pour obtenir des noms de dossiers et des noms de fichiers en utilisant leurs chemins de fichiers. Le bloc de code ci-dessous contient une sous-routine avec un paramètre fileToCheck. Vous pouvez appeler le sous-programme CheckFileExistence avec fileToCheck comme paramètre. Le paramètre fileToCheck sera le nom du fichier ou le nom du dossier dont vous souhaitez vérifier l’existence.

Syntaxe:

Dir([pathname],[attributes])

Paramètres:

[pathname] Optionnel. Le nom du dossier, le nom du fichier ou le chemin du fichier à vérifier
[attributes] Optionnel. Spécifiera certains attributs et la fonction Dir() renverra les noms de fichiers en fonction de ces attributs

Pour [attributes], veuillez consulter les définitions ci-dessous.

vbNormal (Par défaut) Spécifie des fichiers sans attributs.
vbReadOnly Spécifie les fichiers en lecture seule en plus des fichiers sans attributs.
vbHidden Spécifie les fichiers cachés en plus des fichiers sans attributs.
vbDirectory Spécifie des répertoires ou des dossiers en plus des fichiers sans attributs.
vbSystem Spécifie les fichiers système en plus des fichiers sans attributs. Non disponible sur Macintosh.
Sub CheckFileExistence(fileToCheck as String)
Dim FileName As String
FileName = Dir(fileToCheck,vbNormal)

If FileName <> "" Then
    MsgBox "File Exists"
Else
    MsgBox "File Doesn't Exist"
End If
End Sub

Sub test1()

Call CheckFileExistence("Book1.xlsx")

Sortie test1 :

File Exists

Notez que le fichier Book1.xlsx peut se trouver dans n’importe quel dossier de votre ordinateur. La bonne chose à propos de la fonction Dir() est qu’elle vérifie le fichier à n’importe quel endroit possible sur tous les dossiers de votre ordinateur.

Ainsi, si le résultat est File Doesn't Exist, le nom du fichier n’a été utilisé dans aucun dossier ou fichier sur l’ordinateur.

Introduction de caractères génériques dans la fonction Dir() pour vérifier si un fichier / S existe sur votre ordinateur à l’aide de VBA

De plus, la fonction Dir() autorise les caractères génériques sur ses arguments. Ces caractères génériques peuvent être utilisés pour rechercher des fichiers si vous n’êtes pas certain du nom de fichier exact, du nom de dossier et du chemin de fichier dont vous avez besoin.

La liste ci-dessous répertorie les jokers acceptés par la fonction Dir() :

? (point d’interrogation) connote n’importe quel caractère unique. Il peut s’agir de lettres ou de chiffres
* (astérisque) Il représente n’importe quel nombre de caractères dans une rangée.

Exemples:

Ce bloc de code vba vérifiera s’il existe un fichier du type de fichier xlsx. Ainsi, nous utilisons le nom de fichier de recherche xlsx.

Sub CheckFileExistence(fileToCheck as String)
Dim FileName As String
FileName = Dir(fileToCheck,vbNormal)

If FileName <> "" Then
    MsgBox "File Exists"
Else
    MsgBox "File Doesn't Exist"
End If
End Sub

Sub test2()

Call CheckFileExistence("*.xlsx")

End Sub

test2 Résultat :

File Exists

Le code vba ci-dessous vérifiera s’il existe un fichier dont le nom de fichier ne comporte que 2 caractères dans n’importe quel type de fichier. Ainsi, nous utilisons ??.* pour rechercher les noms de fichiers.

Sub CheckFileExistence(fileToCheck as String)
Dim FileName As String
FileName = Dir(fileToCheck,vbNormal)

If FileName <> "" Then
    MsgBox "File Exists"
Else
    MsgBox "File Doesn't Exist"
End If
End Sub

Sub test3()

Call CheckFileExistence("??.*")

End Sub

test3 Résultat :

File Exists

Obtenir/compter tous les noms qui existent sur l’ordinateur à l’aide de VBA

Les blocs de code ci-dessus détectent simplement l’existence du fichier sans obtenir aucune information concernant ces fichiers. Dans le bloc de code ci-dessous, nous allons lister tous les fichiers existants correspondant à notre chaîne de nom de recherche.

Pour le bloc de code ci-dessous, la sortie sera le nom de fichier de tous les fichiers .xlsx dont le nom de fichier est composé de 1 à 4 lettres (????.xlsx).

Sub ListAllFiles(fileToCheck As String)

Dim FileName As String

FileName = Dir(fileToCheck, vbNormal)

Do While FileName <> ""

    Debug.Print FileName
    FileName = Dir()
Loop


End Sub

Sub test4()

Call ListAllFiles("????.xlsx")

End Sub

Sortie test4 :

ATIC.xlsx
CS.xlsx
Data.xlsx
EA65.xlsx
edge.xlsx
fe10.xlsx
FV3P.xlsx
G!.xlsx
GZ7P.xlsx
HE6P.xlsx
IF.xlsx
IF27.xlsx
Lot.xlsx
SR.xlsx
Test.xlsx
WOP.xlsx

Enfin, le bloc de code ci-dessous comptera tous les fichiers existants correspondant à notre chaîne de nom de recherche.

Pour le bloc de code ci-dessous, la sortie sera le nombre de tous les fichiers .xlsx dans lesquels le nom de fichier est de 1 à 4 lettres (????.xlsx).

Sub CountAllFiles(fileToCheck As String)

Dim FileName As String
Dim fileCnt As Long

FileName = Dir(fileToCheck, vbNormal)

Do While FileName <> ""

    fileCnt = fileCnt + 1
    FileName = Dir()
Loop

Debug.Print "There are " & fileCnt & " existing files matched with the criteria."

End Sub

Sub test5()

Call CountAllFiles("????.xlsx")

End Sub

Sortie test5 :

There are 16 existing files matched with the criteria.