Bonjour, bonjour,
J'ai un petit souci pour appeler une variable vba dans une requête sql (pb de syntaxe il me semble)
Le code vba se connecte à une base de données et contient une requête sql
Lorsque le WHERE contient des valeurs (dates, nom d'atelier), le code me sort bien un tableau remplit de données
Par contre quand je déclare les variables en amont et que je les injecte dans la requête, le code me sort un tableau vide (comme s'il ne lisait pas les variables)
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 With ActiveSheet.ListObjects.Add(CONNECTION BDD, Destination:=Range("$A$1")). _ QueryTable .CommandText = Array( _ "SELECT HISTO_OF_DA.NUMERO_OFDA, HISTO_OF_DA.DATE_CLOTURE, PRODUITS.CATEGORIE, HISTO_OF_DA.PRODUIT, HISTO_OF_DA.DESIGNATION, HISTO_OF_DA.QUANTITE_DEMANDEE, HISTO_OF_DA.CUMUL_TEMPS_PASSES, HISTO_OF_DA.C" _ , _ "UMUL_ENTREES, HISTO_OF_DA.DUREE_PREVUE, FAMILLES_TECHNIQUES.DESIGNATION" & Chr(13) & "" & Chr(10) & "FROM gpao.FAMILLES_TECHNIQUES FAMILLES_TECHNIQUES, gpao.HISTO_OF_DA HISTO_OF_DA, gpao" _ , _ ".PRODUITS PRODUITS" & Chr(13) & "" & Chr(10) & "WHERE PRODUITS.CODE_PRODUIT = HISTO_OF_DA.PRODUIT AND PRODUITS.FAMILLE_TECHNIQUE = FAMILLES_TECHNIQUES.CODE_FAMILLE AND ((HISTO_OF_DA.NUMERO_OFDA Like " _ , _ "'F%') AND (HISTO_OF_DA.DATE_CLOTURE>={d'2017-01-01'} AND HISTO_OF_DA.DATE_CLOTURE<={d'2017-01-31'}) AND (FAMILLES_TECHNIQUES.DESIGNATION='AT. AERO'))" _ ) .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .PreserveColumnInfo = True .ListObject.DisplayName = _ "Tableau_Lancer_la_requête_à_partir_de" .Refresh BackgroundQuery:=False End With
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 atelier = "AT. AERO" dateDebut = "2017-01-01" dateFin = "2017-01-31" MsgBox atelier MsgBox dateDebut MsgBox dateFin With ActiveSheet.ListObjects.Add(CONNECTIO BDD, Destination:=Range("$A$1")). _ QueryTable .CommandText = Array( _ "SELECT HISTO_OF_DA.NUMERO_OFDA, HISTO_OF_DA.DATE_CLOTURE, PRODUITS.CATEGORIE, HISTO_OF_DA.PRODUIT, HISTO_OF_DA.DESIGNATION, HISTO_OF_DA.QUANTITE_DEMANDEE, HISTO_OF_DA.CUMUL_TEMPS_PASSES, HISTO_OF_DA.C" _ , _ "UMUL_ENTREES, HISTO_OF_DA.DUREE_PREVUE, FAMILLES_TECHNIQUES.DESIGNATION" & Chr(13) & "" & Chr(10) & "FROM gpao.FAMILLES_TECHNIQUES FAMILLES_TECHNIQUES, gpao.HISTO_OF_DA HISTO_OF_DA, gpao" _ , _ ".PRODUITS PRODUITS" & Chr(13) & "" & Chr(10) & "WHERE PRODUITS.CODE_PRODUIT = HISTO_OF_DA.PRODUIT AND PRODUITS.FAMILLE_TECHNIQUE = FAMILLES_TECHNIQUES.CODE_FAMILLE AND ((HISTO_OF_DA.NUMERO_OFDA Like " _ , _ "'F%') AND (HISTO_OF_DA.DATE_CLOTURE>={d'dateDebut'} AND HISTO_OF_DA.DATE_CLOTURE<={d'dateFin'}) AND (FAMILLES_TECHNIQUES.DESIGNATION='atelier'))" _ ) .RowNumbers = False .FillAdjacentFormulas = False .PreserveFormatting = True .RefreshOnFileOpen = False .BackgroundQuery = True .RefreshStyle = xlInsertDeleteCells .SavePassword = False .SaveData = True .AdjustColumnWidth = True .RefreshPeriod = 0 .PreserveColumnInfo = True .ListObject.DisplayName = _ "Tableau_Lancer_la_requête_à_partir_de" .Refresh BackgroundQuery:=False End With
Dans l'attente de votre aide!![]()
Partager