VBA VB6 - Quand le test DIR(Répertoir) plante !
Le test le plus simple pour tester si le chemin d'un répertoir est valide c'est bien évidemment...
Sauf que... Si le chemin du répertoir est bien renseigner mais qu'il est vide Dir renvoi aussi "", mais quelque fois il peut être nécessaire de savoir si le répertoir existe, même s'il est vide.
Dans cette circonstante ont peu remplacer ce test par...
Dans un module général
Et dans le corps du code...
If Dir(MonRepertoir) = "" Then 'Le répertoir n'existe pas ou n'est pas bien libellé End If
Sauf que... Si le chemin du répertoir est bien renseigner mais qu'il est vide Dir renvoi aussi "", mais quelque fois il peut être nécessaire de savoir si le répertoir existe, même s'il est vide.
Dans cette circonstante ont peu remplacer ce test par...
Dans un module général
Public Function TestSiVide(Rep As String) As Long Dim Obj, RepP, F On Error GoTo Faute 'Si le répertoir n'est pas trouvé Set Obj = CreateObject("Scripting.FileSystemObject") Set RepP = Obj.Getfolder(Rep) Set F = RepP.Files TestSiVide = F.Count Set RepP = Nothing Set F = Nothing Sortie: Set Obj = Nothing Exit Function Faute: TestSiVide = -1 Resume Sortie 'Le Resume est nécessaire pour éviter des noeux dans la pile. End Function
Et dans le corps du code...
Sub Test(Rep as String) Dim Nb As Long, MonRepertoir as String If Rep <> "" Then MonRepertoir = Rep & IIf(Right(Rep, 1) <> "\", "\", "") ' Eventuellement ajouter le slasch inverse Nb = TestSiVide(MonRepertoir ) 'Renvoi -1 si erreur de répertoir (erreur 76) If Nb = 0 Then MsgBox "Le répertoir sélectionné ne contient pas de fichier ", vbCritical, "Sélection répertoir" ElseIf Nb = -1 Then MsgBox "Le répertoir sélectionné n'est pas/plus valide", vbCritical, "Sélection répertoir" Else MsgBox "Le répertoir sélectionné est valide" End If End If End Sub
Ce document intitulé « VBA VB6 - Quand le test DIR(Répertoir) plante ! » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.