Salut la communauté, je développe un formulaire sous Excel pour rechercher des informations, l'idée est la suivante :
L'utilisateur écrit ce qu'il veut rechercher dans un champ texte, puis Click sur un bouton.
Le bouton en Question doit rechercher dans un répertoire tous les sous répertoires dont les noms correspondent avec sa recherche.
voici mon code :
J'ai effectué la compilation en mode debug mais je ne comprend toujours pas.
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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 Private Sub CommandButton1_Click() Dim Search As String Dim myFolder1 As String Dim myPath1 As String Dim myFolder2 As String Dim myPath2 As String '' TextBox1 correspond à la chaine de caractères tapée par l'utilisateur Search = Me.TextBox1.Value 'chemin du répertoire parent dans lequel la recherche à lieu myPath1 = "C:\Users\a874495\Stage\ATA\N°ATA\" myFolder1 = Dir(myPath1, vbDirectory) Do While myFolder1 <> "" If GetAttr(myPath1 & myFolder1) = vbDirectory And myFolder1 <> "." And myFolder1 <> ".." Then myPath2 = "C:\Users\a874495\Stage\ATA\N°ATA\" & myFolder1 & "\" myFolder2 = Dir(myPath2, vbDirectory) Do While myFolder2 <> "" If GetAttr(myPath2 & myFolder2) = vbDirectory And myFolder2 <> "." And myFolder2 <> ".." And myFolder2 Like "*" & Search & "*" Then 'j'ajoute le répertoire qui match avec la recherche dans une listBox Me.ListBox1.AddItem myFolder2 End If 'Je test le repertoire suivant myFolder2 = Dir() Loop End If myFolder1 = Dir() Loop End Sub
Lorsque j'exécute le code, cela fonctionne correctement pour les sous répertoires (myFolder2) mais lorsque j'arrive à la boucle principale qui est censé parcourir tous les dossiers parents elle bloque à la 3eme itération, je m'explique :
En mode debug je vois bien la variable myFolder1 qui prend les valeurs suivante : ".." "." "repertoire 1" puis Erreur d'exécution.
Elle parcours donc les deux répertoires cachés ".." et "." puis le Premier répertoire visible "repertoire 1" et au moment de passer au répertoire 2 ça m'affiche une erreur d’exécution, alors que le code est très claire, il faut passer au répertoire suivant, le pire c'est que ça à l'air de fonctionner pour les 3 premiers si on considère "." et ".." comme des répertoires.
Je vous remercie d'avance pour votre aide
Partager