Fonction Dir

Renvoie le nom d'un fichier ou d'un répertoire, ou encore de tous les fichiers et répertoires existant dans une unité ou un répertoire correspondant au chemin de recherche spécifié.

Syntaxe :


Dir [(PathName As String [, Attributes As Integer])]

Valeur de retour :

Chaîne de caractères

Paramètres :

PathName: Any string expression that specifies the search path, directory or file. This argument can only be specified the first time that you call the Dir function. If you want, you can enter the path in URL notation.

Attributes:Any integer expression that specifies bitwise file attributes. The Dir function only returns files or directories that match the specified attributes. You can combine several attributes by adding the attribute values:

0 : fichiers normaux.

16 : renvoie le nom du répertoire uniquement.

Cet attribut permet de savoir si un fichier ou un répertoire existe, ou bien de déterminer les fichiers et dossiers présents dans un répertoire spécifique.

Pour savoir si un fichier existe, saisissez son chemin complet et son nom. Si le nom du fichier ou du répertoire n'existe pas, la fonction Dir renvoie une chaîne de longueur zéro ("").

Pour générer la liste complète des fichiers existant dans un répertoire spécifique, procédez comme suit : La première fois que vous appelez la fonction Dir, indiquez le chemin de recherche complet des fichiers, par exemple "D:\Files\*.odt". Si le chemin est correct et que la recherche trouve au moins un fichier, la fonction Dir renvoie le nom du premier fichier correspondant au chemin. Pour obtenir les autres noms de fichiers correspondant au chemin, appelez à nouveau la fonction Dir, mais sans argument.

Pour que la fonction renvoie uniquement des répertoires, utilisez le paramètre "attribut". La même règle s'applique pour déterminer le nom d'un volume (partition de disque dur, par exemple).

Codes d'erreur :

5 appel de procédure incorrect

53 fichier non trouvé

Exemple :


Sub ExampleDir
' Affiche tous les fichiers et répertoires
Dim sPath As String
Dim sDir As String, sValue As String
    sDir="Répertoires :"
    sPath = CurDir
    sValue = Dir$(sPath + getPathSeparator + "*",16)
    Do
        If sValue <> "." And sValue <> ".." Then
            If (GetAttr( sPath + getPathSeparator + sValue) And 16) >0 Then
                ' Obtenir les répertoires
                sDir = sDir & chr(13) & sValue
            End If
        End If
        sValue = Dir$
    Loop Until sValue = ""
    MsgBox sDir,0,sPath
End Sub