Bonjour,

J'ai réutilisé ce code.

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
Option Explicit
 
Sub Tst()
Dim Cn As ADODB.Connection
Dim oCat As ADOX.Catalog
Dim Fichier As Variant
Dim Feuille As ADOX.Table
Dim Rst As ADODB.Recordset
Dim texte_SQL As String
Dim Ar() As String, i As Long
 
    Fichier = Application.GetOpenFilename("Fichier Excel, *.csv;*.xls")
    If Fichier = False Then Exit Sub
 
    Set Cn = New ADODB.Connection
    Set oCat = New ADOX.Catalog
 
    Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Fichier & ";Extended Properties=Excel 8.0;"
 
    Set oCat.ActiveConnection = Cn
    For Each Feuille In oCat.Tables
        i = i + 1
        ReDim Preserve Ar(i)
        Ar(i) = Feuille.Name
    Next Feuille
 
    texte_SQL = "SELECT * FROM [" & Ar(1) & "]"
 
    Set Rst = New ADODB.Recordset
    Set Rst = Cn.Execute(texte_SQL)
 
    Range("A2").CopyFromRecordset Rst
 
    Set Feuille = Nothing
    Set oCat = Nothing
    Cn.Close
    Set Cn = Nothing
 
End Sub
Cependant, si j'ai bien compris, ce code permet de trier les noms de feuilles du classeur. Je cherche uniquement à récupérer le nom de la première feuille, quel qu’il soit.

J'ai essayer des différentes manières ( sans utiliser ADOX et en utilisant Sheets(1)) et en essayer de modifier la boucle ForEach pour ne récupérer que la première valeur mais je ne trouve pas de solution. Pouvez vous m'aider à trouver une solution?

Merci d'avance
Tohrak