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
Code vba : | Sélectionner tout |
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.
Code vba : | Sélectionner tout |
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