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:
Autrement dit, le système ne trouve pas de table dans mon fichier.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 ....
Voici mon code:
J'ai sûrement oublié quelque chose, mais quoi ?
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
Merci pour votre aide
Partager