IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Voir le flux RSS

Philippe Tulliez

[Actualité] Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Note : 2 votes pour une moyenne de 3,00.
par , 29/07/2023 à 09h39 (8204 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
Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
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 - Visualiser dans une fenêtre à part
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

Envoyer le billet « Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier » dans le blog Viadeo Envoyer le billet « Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier » dans le blog Twitter Envoyer le billet « Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier » dans le blog Google Envoyer le billet « Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier » dans le blog Facebook Envoyer le billet « Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier » dans le blog Digg Envoyer le billet « Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier » dans le blog Delicious Envoyer le billet « Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier » dans le blog MySpace Envoyer le billet « Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier » dans le blog Yahoo

Mis à jour 06/05/2024 à 17h21 par Philippe Tulliez

Catégories
VBA Excel

Commentaires

  1. Avatar de cduigou
    • |
    • permalink
    Bonjour,

    Je pense qu'il y a une manière quand même plus moderne que les vieilles commandes natives de VBA comme DIR pour gérer le système de fichiers.
    Référencer la très complète bibliothèque Microsoft Scripting Runtime

    Dim fso as Scripting.FileSystemObject
    Set fso =New Scripting.FileSystemObject

    Et pour tester l'existence d'un fichier :
    If fso.FileExists(nom complet du fichier) Then
  2. Avatar de Philippe Tulliez
    • |
    • permalink
    Bonjour,
    Merci pour votre réaction.
    Il est exact qu'il y a mieux et surtout plus complet que la fonction Dir mais tout dépend de ce que l'on attend comme information.
    J'utilise cette fonction depuis plus de 20 ans et elle répond à mes besoins ainsi qu'aux demandes de mes clients.
    Le jour où j'aurai un cas plus complexe, je passerai par le FSO que je connais très bien.

    J'ai eu un NOKIA pendant très longtemps alors que des collègues avaient déjà des smartphone mais pour mes besoins de l'époque qui étaient de téléphoner et de communiquer pas SMS cela me suffisait amplement.
  3. Avatar de laurent_ott
    • |
    • permalink
    Bonjour,
    Cela convient peut-être à vos besoins, mais précisez tout de même pour information que la fonction IsFileExist(FullName) présentée ici va renvoyer False sur un fichier avec attribut : fichier en lecture seule, masqué, système.
  4. Avatar de Philippe Tulliez
    • |
    • permalink
    Citation Envoyé par laurent_ott
    Bonjour,
    Cela convient peut-être à vos besoins, mais précisez tout de même pour information que la fonction IsFileExist(FullName) présentée ici va renvoyer False sur un fichier avec attribut : fichier en lecture seule, masqué, système.
    Bonjour Laurent,
    Désolé de répondre si tard, je viens seulement de découvrir ton commentaire, et merci pour cette précision. C'est un fait que si le fichier est caché la fonction renverra False mais j'utilise cette fonction dans le cadre des applications que je livre et il n'y a pas de fichier caché et je vois mal un employé cacher un fichier, ce serait une faute grave mais je suis d'accord que pour compléter mon article, il est important de le préciser.
    C'est chose faite