Bonjour,

J'ai un problème de boucle et je m'arrache les cheveux dessus. Je n'arrive pas à trouver une confirmation de ma supposition ni une solution de contournement. Alors je fais appel à vous.

J'ai une boucle se basant sur la fonction Dir() : je veux en effet parcourir tous les fichiers d'un répertoire. Au sein de ma boucle, je fais appel à la fonction Dir pour vérifier la présence d'un fichier dans un autre répertoire. Concrètement ça donne ça.

Je définis d'abord les variables Rep_bis et Rep_projet

Code : 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
 
    Fichier_BIS = Dir(Rep_bis & "BIS_*.spa")
 
    Do While Fichier_BIS <> ""
 
        idpatient = Mid(Fichier_BIS, 5, 7)
 
        Fichier_patient = Rep_projet & "Patient_BIS_" & idpatient & ".xlsx"
 
        If Dir(Fichier_patient) <> "" Then
            Debug.Print "Entrée dans la boucle if"
        Else
            Debug.Print "Pas entrée dans la boucle if"
        End If
        Fichier_BIS = Dir()
    Loop
J'ai essayé de changer la condition If, sans utiliser la fonction Dir (par exemple j'ai essayé avec If idpatient = "01-0001" etc... Avec cette condition ça marche, je boucle bien sur les fichiers du répertoire. En revanche avec le If Dir(Fichier_patient) <> "" Then, ça ne fonctionne plus, je ne boucle plus sur les fichiers de mon répertoire.

Je crains de ne pas avoir compris un truc sur le fonctionnement du Dir et que l'imbrication d'un dir dans une boucle sur Dir casse tout.

Pouvez-vous me confirmer ce point ?

Si tel est le cas, auriez-vous une idée à me suggérer pour remplacer le Dir dans mon If ?

J'espère être à peu près clair...

Merci d'avance pour votre aide

Bonne fin d'après-midi