hm, désolé pour le titre je savais pas quoi mettre

Alors, je récupere un chemin grace à un explorateur windows avec le code suivant

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
33
34
35
36
37
38
39
40
41
42
'declarations
Private Const BIF_RETURNONLYFSDIRS = 1
Private Const BIF_DONTGOBELOWDOMAIN = 2
Private Type BrowseInfo
    hWndOwner As Long
    pIDLRoot As Long
    pszDisplayName As Long
    lpszTitle As Long
    ulFlags As Long
    lpfnCallback As Long
    lParam As Long
    iImage As Long
End Type
 
 
 
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib "shell32" (ByVal pidList As Long, _
        ByVal lpBuffer As String) As Long
Private Declare Function lstrcat Lib "kernel32" Alias "lstrcatA" (ByVal lpString1 As String, _
        ByVal lpString2 As String) As Long
 
Public Function RechercherDossier(Titre As String, Handle As Long) As String
Dim lpIDList As Long
Dim strBuffer As String
Dim strTitre As String
Dim tBrowseInfo As BrowseInfo
 
    With tBrowseInfo
        .hWndOwner = Handle
        .lpszTitle = lstrcat(strTitre, "")
        .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
    End With
 
    lpIDList = SHBrowseForFolder(tBrowseInfo)
 
    If (lpIDList) Then
        strBuffer = String(255, vbNullChar)
        SHGetPathFromIDList lpIDList, strBuffer
        RechercherDossier = Left(strBuffer, InStr(strBuffer, vbNullChar) - 1)
    End If
End Function
Là tout va bien !!

Je voudrais maitenant trouver les fichiers texte dans ce dossier que j'ai choisi. J'ai à la base le chemin qui est un string dans un label d'un userform.
J'ai trouvé ici ce code que j'ai mis dans un autre module:

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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
'Option Explicit
Private Const BIF_RETURNONLYFSDIRS = 1
Private Const BIF_DONTGOBELOWDOMAIN = 2
Private Const MAX_PATH = 260
Private Declare Function FindExecutable Lib "shell32.dll" Alias "FindExecutableA" _
(ByVal lpFile As String, ByVal lpDirectory As String, _
ByVal lpResult As String) As Long
 
Private Declare Function SHBrowseForFolder Lib "shell32" (lpbi As BrowseInfo) As Long
Private Declare Function SHGetPathFromIDList Lib _
"shell32" (ByVal pidList As Long, ByVal lpBuffer _
As String) As Long
Private Declare Function lstrcat Lib "kernel32" _
Alias "lstrcatA" (ByVal lpString1 As String, ByVal _
lpString2 As String) As Long
Private Type BrowseInfo
   hWndOwner As Long
   pIDLRoot As Long
   pszDisplayName As Long
   lpszTitle As Long
   ulFlags As Long
   lpfnCallback As Long
   lParam As Long
   iImage As Long
End Type

 
 
Sub RechercheFichier()

Dim lpIDList As Long ' Declare Variables
Dim szTitle As String
Dim sBuffer As String
Dim tBrowseInfo As BrowseInfo
szTitle = "Choisissez le répertoire :"
 
With tBrowseInfo
    .lpszTitle = lstrcat(szTitle, "")
    .ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN
End With
lpIDList = SHBrowseForFolder(tBrowseInfo)


Debug.Print lpIDList


If (lpIDList) Then
    sBuffer = Space(MAX_PATH)
    SHGetPathFromIDList lpIDList, sBuffer
    sBuffer = Left(sBuffer, InStr(sBuffer, vbNullChar) - 1)
End If
 
'Recherche des fichiers dans le dossier
Dim Compteur1 As Integer
Dim ObjetTrouve As FileSearch
Dim ListeFichiers As String
Dim Dossier As String
Dim response As String
 
Dossier = sBuffer 'InputBox("Indiquez le répertoire à afficher", "Liste de fichiers", CurDir())

If Dossier = "" Then
     Exit Sub
End If
ListeFichiers = ""
Set ObjetTrouve = Application.FileSearch
With ObjetTrouve
    .NewSearch
    .LookIn = Dossier
    .SearchSubFolders = False
    .Filename = "*.txt"
    .Execute
End With


If ObjetTrouve.FoundFiles.Count > 0 Then
    For Compteur1 = 1 To ObjetTrouve.FoundFiles.Count
        Menu.ListeTexte.AddItem ObjetTrouve.FoundFiles(Compteur1)
    Next
End If

    
End Sub
je l'ai deja un peu modifié mais le probleme est que ce code debute lui aussi d'un explorateur pour selectionner le dossier contenant (et moi je voudrait qu'il cherche directement dans le chemin qui se trouve dans mon label)

J'ai fait quelques tests et j'ai vu que cetai à cette ligne qu'il lancer l'explorateur

Code : Sélectionner tout - Visualiser dans une fenêtre à part
lpIDList = SHBrowseForFolder(tBrowseInfo)
et que la fonction renvoyait un numero. J'ai vu que ce numero changeait à chaque execution

là le seul moyen de faire ce que je veux (je pense) serait de realiser une fonction me permettant de trouver le numero du chemin qui se trouve dans mon label pour ainsi directement le fournir à ma sub RechercherFichier (et ainsi ne plus avoir à choisir le dossier qui contient les fichiers).

J'espere avoir été clair

bon j'ai deja fait quelques recherches mais là je patoge un peu

le numero renvoyé est bien le "handle" ??

merci de votre aide