J'essaie d'accéder aux données d'un classeur XLSX par des requêtes SQL à l'aide de ADO.
Le classeur en question comporte plusieurs feuilles, et, dans chacune d'elles, un tableau ListObject correctement structuré.
J'arrive bien à ouvrir mon fichier, mais, lorsque j'interroge le schéma des tables, le OpenSchema(adSchemaTables).RecordCount est égal à -1.
De même, lorsque j'essaie d'accéder à un listobject spécifique, j'ai le message suivant:

Erreur d'exécution '-2147217865(80040e37)'

Le moteur de base de données Microsoft Access n'a pas pu trouver l'objet t_comptes. Vérifiez qu'il existe et que vous avez ....
Autrement dit, le système ne trouve pas de table dans mon fichier.

Voici mon 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
Public Sub Essai()
Dim Plage As Range
    Set Plage = Workbooks("Tests").Worksheets("Feuil1").Range("A1:B2")
    Call Extraction(Plage)
End Sub
 
 
Public Sub Extraction(rng As Range)
    Dim Source As ADODB.Connection
    Dim Rst As ADODB.Recordset
    Dim Fichier As String
    Dim Requete As String
 
    Fichier = "\\BETH-SALEM_NAS\Cloud Hubic\Famille_Administratif\Comptabilité\Développement procédure comptes\Comptes Familiaux - Données.xlsx"
    Requete = "SELECT [Libelle] FROM [t_Comptes] WHERE [Cle] = 25"
 
    Set Source = New ADODB.Connection
    With Source
        .Provider = "Microsoft.Jet.OLEDB.4.0"
        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" _
            & Fichier & ";Extended Properties=""Excel 12.0;HDR=YES;"""
        .Open
    End With
 
    Set Rst = New ADODB.Recordset
    Set Rst = Source.Execute(Requete)
 
    rng.Offset(1, 0).CopyFromRecordset Rst
 
    Rst.Close
    Source.Close
    Set Source = Nothing
    Set Rst = Nothing
End Sub
J'ai sûrement oublié quelque chose, mais quoi ?

Merci pour votre aide