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 :

Appel variable vba dans requete sql [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 2
    Par défaut Appel variable vba dans requete sql
    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!

  2. #2
    Candidat au Club
    Homme Profil pro
    Apprenti Ingénieur
    Inscrit en
    Avril 2016
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Apprenti Ingénieur

    Informations forums :
    Inscription : Avril 2016
    Messages : 4
    Par défaut
    Bonjour claireblbl,

    Effectivement, ton soucis est un problème de syntaxe.
    La requête que tu dois effectuer est une chaîne de caractères, pour incorporé une variable VBA, il faut couper cette chaîne de caractères grâce au guillemet fermant et ouvrant et au caractère &.


    Exemple de la syntaxe :

    .CommandText = Array( _
    " début de ta requête " & ta variable & " fin de ta requête"

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2017
    Messages : 2
    Par défaut
    Super!! Mille merci remy36 ::))

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. variable dans requete SQL pour delphi
    Par socooooool dans le forum Bases de données
    Réponses: 9
    Dernier message: 25/01/2013, 11h27
  2. variable vba dans requête sql
    Par pasb71 dans le forum Access
    Réponses: 4
    Dernier message: 16/05/2011, 17h58
  3. variable Unix dans requete SQL
    Par shakkou dans le forum Requêtes
    Réponses: 2
    Dernier message: 11/06/2010, 14h59
  4. Insérer variable integer dans requete SQL?
    Par El Doctor J dans le forum C++Builder
    Réponses: 8
    Dernier message: 26/11/2007, 10h18
  5. Format dans Requete SQL sous VBA
    Par Sam 069 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 18/07/2006, 12h09

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