Bonjour à tous,

J'essaye de faire une petite macro sous Excel par le biais de l'enregistreur. Ma macro va chercher les données dans une base SQL et les retourne dans une feuille EXCEL.

Jusque là tout va bien. J'essaye d'améliorer le tout en voulant passer les 2 dates figées utilisées dans le WHERE de ma requête dans 2 variables que j'appellerai ultérieurement dans une fenêtre.

je déclare donc 2 variables date que j'essaye d'appeler dans ma requête en les ayant initialisé au début pour faire mes tests. Sauf qu'à ce moment j'ai une erreur d'exécution liée à une erreur de syntaxe SQL

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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Sub Retours_EnCours()
'
Dim DateDebut As Date
Dim DateFin As Date
DateDebut = "01/01/2011"
DateFin = "31/12/2011"
' Macro8 Macro
'
Sheets("Requête").Select
ActiveSheet.Cells.Clear
 
'
 
    With ActiveSheet.ListObjects.Add(SourceType:=0, Source:= _
        "ODBC;DSN=FGI;Description=FGI;APP=Microsoft Office 2010;WSID=L0270308;DATABASE=FGI;LANGUAGE=Français;Trusted_Connection=Yes" _
        , Destination:=Range("[Suivi_Retours_EnCours.xlsm]Requête!$A$1")).QueryTable
        '.CommandText = Array( _
        "SELECT ""FG INOX$Sales Header"".""Reason Code"" AS 'Code Motif', ""FG INOX$Sales Header"".No_ AS 'No Retour', ""FG INOX$Sales Header"".""Date de création"" AS 'Date Retour', ""FG INOX$Sales Header"".""Code utilisa" _
        , _
        "teur"", ""FG INOX$Sales Header"".""Sell-to Customer No_"" AS 'No Client', ""FG INOX$Sales Header"".""Sell-to Customer Name"" AS 'Nom Client', ""FG INOX$Sales Header"".""Customer Order No_"" AS 'No Commande', ""FG I" _
        , _
        "NOX$Sales Header"".""Order Date"" AS 'Date Commande', ""FG INOX$Sales Header_1"".""Code utilisateur"" AS 'Créateur Commande'" & Chr(13) & "" & Chr(10) & "FROM {oj FGI.dbo.""FG INOX$Sales Header"" ""FG INOX$Sales Header"" LEFT OUTER JOIN FG" _
        , _
        "I.dbo.""FG INOX$Sales Header"" ""FG INOX$Sales Header_1"" ON ""FG INOX$Sales Header"".""Customer Order No_"" = ""FG INOX$Sales Header_1"".No_}" & Chr(13) & "" & Chr(10) & "WHERE (""FG INOX$Sales Header"".""Document Type""=5) AND (""FG INOX$Sal" _
        , _
        "es Header"".""Date de création"" Between {ts '2011-01-01 00:00:00'} And {ts '2011-12-31 00:00:00'})" & Chr(13) & "" & Chr(10) & "ORDER BY ""FG INOX$Sales Header"".""Reason Code""" _
        
 
        .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_FGI"
        .Refresh BackgroundQuery:=False
    End With
 
     Range("Tableau_Lancer_la_requête_à_partir_de_FGI[Code Motif]").Select
    Selection.ListObject.ListColumns.Add Position:=1
    Range("Tableau_Lancer_la_requête_à_partir_de_FGI[[#Headers],[Colonne1]]"). _
        Select
    ActiveCell.FormulaR1C1 = "Famille Motif"
    Range("A2").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(LEFT([@[Code Motif]],1)=""1"",""100"",IF(LEFT([@[Code Motif]],1)=""2"",""200"",IF(LEFT([@[Code Motif]],1)=""3"",""300"",IF(LEFT([@[Code Motif]],1)=""4"",""400"",IF(LEFT([@[Code Motif]],1)=""5"",""500"",IF(LEFT([@[Code Motif]],1)=""6"",""600"",IF(LEFT([@[Code Motif]],1)=""7"",""700"",IF(LEFT([@[Code Motif]],1)=""8"",""800"",IF(LEFT([@[Code Motif]],1)=""9"",""900"",0)))))))))"
    Range("A3").Select
 
    Range("Tableau_Lancer_la_requête_à_partir_de_FGI[Date Commande]").Select
        Selection.NumberFormat = "m/d/yyyy"
    Range("Tableau_Lancer_la_requête_à_partir_de_FGI[Date Retour]").Select
        Selection.NumberFormat = "m/d/yyyy"
 
    Columns("A:J").EntireColumn.AutoFit
 
End Sub
Pourriez vous m'aider?

Merci d'avance