IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Erreur de syntaxe SQL


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Erreur de syntaxe SQL
    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

  2. #2
    Membre émérite Avatar de issoram
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2009
    Messages
    665
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 665
    Par défaut
    Bonjour,

    si c'est de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DateDebut = "01/01/2011"
    DateFin = "31/12/2011"
    dont tu parles je ne les vois plus dans la suite du code...?

    Cordialement.

  3. #3
    Invité
    Invité(e)
    Par défaut
    En fait je n'étais pas très clair
    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 {DateDebut} And {DateFin})" & 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
    J'ai remplacé les valeurs par mes variables dans le code ci-dessus. Le résultat est le même
    Dernière modification par AlainTech ; 22/05/2012 à 22h50. Motif: Suppression de la citation

  4. #4
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, essaie en encadrant tes dates par des #, du style : #01/01/2011# ?

    Extrait d'un code perso dans une clause WHERE plus conséquente :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ..... & " #" & Format$(sStr, "mm/dd/yyyy") & "#)  " & ....

Discussions similaires

  1. Erreur de syntaxe SQL
    Par Ismaël(l) dans le forum Langage SQL
    Réponses: 2
    Dernier message: 10/05/2007, 10h19
  2. [MySQL] Jointure : erreur de syntaxe SQL
    Par kawther dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 26/03/2007, 18h25
  3. erreur de syntaxe sql dans vba
    Par @rkane dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 12/12/2006, 19h23
  4. erreur de syntaxe SQL
    Par michka999 dans le forum Requêtes
    Réponses: 9
    Dernier message: 29/08/2006, 17h52
  5. [SQL] Erreur de syntaxe SQL
    Par gregius dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 08/08/2006, 20h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo