Comment fonctionne DIR

Bonjour,

question bête au possible, comment fonctionne la commande dir() ?

Dans mon code test ci dessous je voudrais lister tous les fichiers de mon répertoire, or je ne récupère que le premier lors des 3 itérations, alors que j'ai au moins 2 fichiers xlsm dans le répertoire, mais un est le fichier excel par lequel je lance la commande, est ce que cela pourrait être ca le problème ?

Merci d'avance

David

Sub Button1_Click()

Dim lst_Fichiers(10) As String
'Dim lst_Fichiers() As String
Dim X As Integer

'lst_Fichiers(0) = "0"
'lst_Fichiers(1) = "1"
'lst_Fichiers(2) = "2"

'lst_Fichiers = Dir(ThisWorkbook.Path & "\" & "*.xlsm")

For X = 0 To 10

lst_Fichiers(X) = Dir(ThisWorkbook.Path & "\" & "*.xlsm")

Next X

MsgBox lst_Fichiers(0) & vbCrLf & lst_Fichiers(1) & vbCrLf & lst_Fichiers(2)

End Sub

Bonjour,

le 1er reflexe doit être F1 sur DIR : l'aide.

Extrait :

La fonction Dir renvoie le premier nom de fichier correspondant à l'argument pathname. Pour extraire d'autres noms de fichier correspondant à l'argument pathname, appelez de nouveau la fonction Dir sans préciser d'arguments. Quand tous les fichiers ont été indiqués, la fonction Dir renvoie une chaîne de longueur nulle ("").

eric

Bonjour Eriic,

pas bête pas bête du tout même

j'ai toujours le reflexe de chercher sur internet et plus dans l'aide...

Merci, tout s'éclaire maintenant

Bonne journée

David

J'ai mis résolu trop vite...

Je dois être fatigué....

Dans mon code ci dessous j'ai fais comme dans l'aide sur MSDN, à savoir j'appelle une fois dir avec l'argument du répertoire et ensuite je l'appelle sans argument pour itérer les autres fichiers, sauf que le msgbox me donne le premier fichier du répertoire mis en argument, puis après, il me donne 8 fois le premier fichier de mon dossier "Documents" de windows ?

Sub Button1_Click()

Dim lst_Fichiers(10) As String
Dim X As Integer

X = 1

lst_Fichiers(0) = Dir(ThisWorkbook.Path & "\" & "*.xlsm")

While Dir("") <> "" And X <= 9

   lst_Fichiers(X) = Dir("")
   X = X + 1

Wend

   MsgBox lst_Fichiers(0) & vbCrLf & lst_Fichiers(1) & vbCrLf & lst_Fichiers(2) & vbCrLf & lst_Fichiers(3) & vbCrLf & lst_Fichiers(4) & vbCrLf & lst_Fichiers(5) & vbCrLf & lst_Fichiers(6)

End Sub

Je me corrige moi même, voila code qui fonctionne chez moi :

c'est à ce niveau qu'il faut changer : While Dir <> "" And X <= 9

Sub Button1_Click()

Dim lst_Fichiers(10) As String
Dim X As Integer

X = 1

lst_Fichiers(0) = Dir(ThisWorkbook.Path & "\" & "*.xlsm")

While Dir <> "" And X <= 9

   lst_Fichiers(X) = Dir
   X = X + 1

Wend

   MsgBox lst_Fichiers(0) & vbCrLf & lst_Fichiers(1) & vbCrLf & lst_Fichiers(2) & vbCrLf & lst_Fichiers(3) & vbCrLf & lst_Fichiers(4) & vbCrLf & lst_Fichiers(5) & vbCrLf & lst_Fichiers(6)

End Sub

Bonjour,

à mon avis, avec ce code tu n'as pas la totalité de tes fichiers. chaque fois que tu utilises la commande dir, il te donne le fichier suivant dans le répertoire.

donc si tu fais

while dir<>"" ' il te prend un fichier

puis si tu fais

list_fichier(X)=dir ' il te mettra le suivant

dans list_fichier tu n'as donc qu'un fichier sur deux.

voici une proposition d'adaptation de ton code

Sub Button1_Click()

    Dim lst_Fichiers(10) As String
    Dim X As Integer

    X = 0

    nf = Dir(ThisWorkbook.Path & "\" & "*.xlsm")

    While nf <> "" And X <= 9

        lst_Fichiers(X) = nf
        X = X + 1
        nf = Dir
    Wend

    MsgBox lst_Fichiers(0) & vbCrLf & lst_Fichiers(1) & vbCrLf & lst_Fichiers(2) & vbCrLf & lst_Fichiers(3) & vbCrLf & lst_Fichiers(4) & vbCrLf & lst_Fichiers(5) & vbCrLf & lst_Fichiers(6)

End Sub

Ha.. ok, j'avais pas pensé à cela, ok maintenant je comprend mieux pourquoi il ne me trouvait pas le fichier intermédiaire (qui correspondait au fichier excel d'ou j'appelais le code et du coup je me suis dis qu'il n'apparait pas parcequ'il appelle la commande ce qui peut paraitre logique d'un certain point de vue...

Merci pour cette précision.

Rechercher des sujets similaires à "comment fonctionne dir"