Bonjour
Je suis entrain d'écrire une macro qui fait la chose suivante :

1- Un bouton dans une feuille fait apparaitre mon Userform

2- ensuite sur le userform, j'ai un bouton qui, une fois cliqué dessus, fait apparaite une InputBox dans laquelle l'utilisateur doit reseigner le chemin d'accès du dossier excel qu'il doit ouvrir.

3- Une fois le chemin renseigné, le modèle ADO me permet d'accéder au fichier sans l'ouvrir, de récupérer le nom de toutes les feuilles présentes dans le fichier, et de me les afficher dans mon UserForm sous forme de menu déroulant.

C'est ce menu déroulant que je voudrais. Voici le bout de code que j'ai écris pour les 3 premières étapes.

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
Private Sub CommandButton1_Click()
Dim lien As String, i As Integer, j As Integer
Dim con As ADODB.Connection, oCat As ADOX.Catalog
Dim Feuille As ADOX.Table, TteFeuille As String, Tableau() As String
 
lien = InputBox("Renseigner le lien du dossier à traiter", "Lien du dossier contrepartie")
 
    Set con = New ADODB.Connection
    Set oCat = New ADOX.Catalog
 
    con.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & lien & _
             "Extended Properties=Excel 8.0;"
    Set oCat.ActiveConnection = con
 
     j = 0
    For Each Feuille In oCat.Tables
            j = j + 1
        ReDim Preserve Tableau(1 To j)
        Tableau(j) = Feuille.Name
    Next Feuille
End Sub
Mon soucis réside sur cette étape (introduction du nom des feuilles dans un menu déroulant). Je ne sais pas si la ListBox me permettra de faire la suite, qui est :
lorsque l'utilisateur clique sur l'un des noms de feuilles affichée, qu'il puisse récupérer les données contenues dans cette feuille.

Je sais que cela est possible avec le modèle ADO, mais je ne vois pas encore comment je vais procéder.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
Private Sub ListBox1_Click()
 For i = 1 To j
    ListBox1.Value = Tableau(i)
 Next i
 
 If ListBox1.Value.Selected = True Then
 
End Sub