par , 29/07/2023 à 10h39 (8955 Affichages)
Introduction
Lorsqu'on travaille avec des fichiers dans un environnement de programmation, une question fondamentale se pose souvent : comment savoir si un fichier existe avant de tenter d'y accéder ? Cette interrogation, bien que simple en apparence, est cruciale pour éviter les erreurs et les exceptions inattendues dans nos programmes. Dans le monde de la programmation VBA (Visual Basic for Applications), cette question prend une importance particulière. En effet, VBA est souvent utilisé pour automatiser des tâches liées aux fichiers dans des applications comme Excel, Word et Access.
Dans cet article, nous allons explorer une fonction générique en VBA qui permet de vérifier l'existence d'un fichier avant d'essayer de l'ouvrir, de le lire, de l'écrire ou de le supprimer. Cette fonction renvoie simplement True si le fichier existe, et False dans le cas contraire. Bien que petite, cette fonction est incroyablement utile et peut grandement améliorer la robustesse de vos scripts VBA. Alors, plongeons dans le code et voyons comment cela fonctionne.
Petite précision et merci à Laurent_Ott de m'avoir signalé cet oubli, si un fichier est caché, la fonction IsFileExistFullName renverra False
Code de la fonction
L'argument FullName doit contenir le nom et le chemin complet du fichier
1 2 3 4
| Function IsFileExist(FullName As String) As Boolean
' Vérifie l'existence d'un fichier
IsFileExist = Dir(FullName) <> ""
End Function |
Exemple d'une procédure VBA Excel qui l'invoque
Dans cet exemple, nous allons invoquer la fonction IsFileExist pour vérifier l'existence du fichier nommé "Bilan". Ce fichier doit être sauvegardé dans le répertoire où se trouve le fichier Excel contenant le code VBA. Si le fichier existe déjà, une boîte de dialogue s'ouvrira pour demander à l'utilisateur s'il souhaite remplacer le fichier existant.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| Sub Main()
Const FileName As String = "Bilan.xlsx"
Const Message As String = "Voulez-vous remplacer le fichier"
Dim fn As String ' Nom complet du fichier
Dim fl As Boolean
Dim e As Byte
fn = ThisWorkbook.Path & Application.PathSeparator & FileName
'
fl = Not IsFileExist(fn)
If Not fl Then
fl = (MsgBox(Message, vbYesNo + vbDefaultButton2) = vbYes)
End If
If fl Then
' Code pour exporter ou sauver le fichier
End If
End Sub |
Explorez davantage la fonction Dir avec mes autres billets