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

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
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
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!