VBA VB6 - Quand le test DIR(Répertoir) plante !

Septembre 2016

Le test le plus simple pour tester si le chemin d'un répertoir est valide c'est bien évidemment...
    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



A voir également :

Ce document intitulé «  VBA VB6 - Quand le test DIR(Répertoir) plante !  » issu de CommentCaMarche (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.