Bonjour,
J'ai besoin d'utiliser un objet de type QueryTable pour récupérer des données d'un fichier Access.
Le problème survient lorsque je veux exécuter une requête SQL avec une clause "WHERE". J'ai alors une belle erreur 1004:
Le code utilisé est le suivant:Error 1004 La requête ne s'est pas exécutée ou la table de la base de données n'a pas pu être ouverte.
Là où ça devient troublant c'est que si j'exécute la requête suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 'Extraction des stats strConnection = "OLEDB;Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbStatPath & ";Persist Security Info=False" Set rngDestination = myStatSheet.Range("A1") strSql = "SELECT course,section,vitesse_moy,ecart_type" & _ " FROM " & strStatTbl & _ " WHERE section=" & CStr(arrSections(i)) & ";" With myStatSheet.QueryTables.Add(strConnection, rngDestination, strSql) .AdjustColumnWidth = True .BackgroundQuery = True .Refresh End With 'dbStatPath et strStatTbl sont des 'string' contenant respectivement le chemin absolu de la bdd Access et le nom de la table sur laquelle récupérer les données, arrSections() un tableau de 'Long'
...ça marche!
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 strSql = "SELECT * & _ " FROM " & strStatTbl & ";"
J'ai essayé de le faire directement sous Excel et même topo. Si j'utilise '*' pour désigner les colonnes à récupérer ET que je ne précise pas de clause 'WHERE' alors ça fonctionne. Mais si j'essaie de faire exécuter ma requête "complète" alors j'ai le même message d'erreur.
Je précise que la même requête exécutée dans la base Access fonctionne parfaitement.
Il y a là quelque chose qui m'échappe...merci d'avance pour votre aide.
Partager