Changer le code d'une requête SQL d'une base access via un code VBA Excel [Résolu]

Signaler
Messages postés
3
Date d'inscription
mercredi 29 avril 2020
Statut
Membre
Dernière intervention
29 avril 2020
-
Messages postés
3
Date d'inscription
mercredi 29 avril 2020
Statut
Membre
Dernière intervention
29 avril 2020
-
Bonjour

Je voudrais juste savoir si on pouvait changer le code SQL d'une requete access via un code VBA executé depuis Excel.
La requête est une union entre tout les tableaux et pour aléger le nombres de données à transférer, je voudrais pouvoir changer la requête à la source afin de selectionner les données tableau par tableau
J'ai activé les Acess et les DAO Object Lybrary

SELECT *
FROM [S15_2020]
UNION SELECT *
FROM [S16_2020]
UNION SELECT *
FROM [S17_2020]

3 réponses

Messages postés
12628
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 octobre 2020
701
bonjour, tu n'expliques ni ce que tu fais, ni comment tu le fais.
la requête est-elle définie dans Access et exécutée depuis Excel?
dans ce cas, il est peut-être préférable, au lieu de la modifier, de la définir dans le code VBA sous Excel.
Messages postés
3
Date d'inscription
mercredi 29 avril 2020
Statut
Membre
Dernière intervention
29 avril 2020

En fait j'exploite cette requête via Power Query.
Mon objectif est de changer le code de la requête Access, que Excel envoie à la base de donnée le nouveau code, code que j'aurais défini dans VBA.
Quelque chose comme:
Dim Code as string
Code = "SELECT *" & vbCrLf & _
"FROM [S15_2020]" & vbCrLf & _
"UNION SELECT *" & vbCrLf & _
"FROM [S16_2020];"
Set Coderequete = Code


J'ai juste a changer la variable Code et executer le programme pour redéfinir le code SQL de la requête
Messages postés
12628
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 octobre 2020
701
je ne suis pas convaincu que c'est la bonne chose à faire, et voici un exemple dont tu peux peut-être t'inspirer:
Private Sub yy()
Dim qr As QueryDef, sourcesql As String
Set qr = CurrentDb.QueryDefs("nom de la requête")
sourcesql = "SELECT ..."
qr.sql = sourcesql
End Sub

l'exemple est pour du VBA dans Access, je suppose que tu pourras facilement l'adapter pour le faire à partir de Excel.
Messages postés
12628
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 octobre 2020
701 >
Messages postés
12628
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
15 octobre 2020

dans excel:
Private Sub yy()
Dim db As DAO.Database, chem As String, qr As DAO.QueryDef, sourcesql As String
chem = ThisWorkbook.Path + "\ccm.accdb"
Set db = OpenDatabase(chem)
Set qr = db.QueryDefs("nom de la requête")
sourcesql = "SELECT ... "
qr.Sql = sourcesql
End Sub
Messages postés
3
Date d'inscription
mercredi 29 avril 2020
Statut
Membre
Dernière intervention
29 avril 2020

Parfait, merci beaucoup, ça marche
J'y serais surement pas arrivé sans ton aide