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 : 4 votes pour une moyenne de 3,75.
par , 29/07/2023 � 09h39 (10137 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