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 :

Mettre des variables dans une requête SQL


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut Mettre des variables dans une requête SQL
    Bonjour,

    Je viens de revenir , je n'utilise que peu les forums mais la je pense revenir , car je débute un gros projet et j'ai besoin d'aide sur des points un peu pointu en VBA et la gestion dao.

    Je suis sur un projet ou j'aimerais questionné une base de donnée que j'ai créé , seulement avec mon code je n'arrive pas a inserer une variable
    je m'explique dans ma requete ma fois tres simple pour l'exemple , "SELECT name,PrixAction FROM Companies WHERE PrixAction = 30;" on a cette requete entre guillemet ce qui me pose un probleme car quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "SELECT name,PrixAction FROM Companies WHERE PrixAction =" & valeur & ";"
    avec valeur une variable correspondant a une valeur que j'aurais rentré dans mon userform par exemple , ca marche pas . donc je demande votre aide
    Je vous remercie d'avance et je pense que vous allez me revoir dans pas longtemps .


    Cordialement

    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
    'recuperer une requete sql
    Sub CopyFromRecordset_DAO()
         Dim Db1 As Database
         Dim Rs1 As Recordset
         Dim requete As String
         ' Ouverture de la base de données
         Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "\DBShare")
         ' Un objet Recordset représente les enregistrements d'une table
         'requette a ecrire :
         requete = "SELECT name,PrixAction FROM Companies WHERE PrixAction = 30;" ' mettre une guillemet pour le parametre
         Set Rs1 = Db1.OpenRecordset(requete, Type:=dbOpenSnapshot) 'name:="R6"
         ' Effacement des données existantes dans la WorkSheet (sauf les titres)
         ' et copie des enregistrementsSELECT name, Symbol FROM Companies;
         With Worksheets("Feuil1").Range("B1")
              'With Selection.CurrentRegion
                   'Intersect(.Cells, .Offset(1)).Select
     
              'End With
              .ClearContents
              .CopyFromRecordset Rs1
         End With
         'Fermeture de la Base de données
         Db1.Close
    End Sub

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 109
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 109
    Par défaut
    Salut

    Je ne vois pas d'erreur.

    Que contient "valeur" ? Comment est elle déclarée?

    As tu testé avec valeur = 30 pour être sur que ta base contienne des données (puisque tu dis que ça fonctionne avec la ligne contenant 30).

    Si tu places un point d'arrêt et que tu espionne la string contenu dans la variable requete, est-ce que le texte te semble exacte ?

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 165
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une requête est une chaîne de caractères. Est-ce que ta variable nommée Valeur est une variable de type String ?
    Pour ma part dans des cas semblables, j'utilise pour tout les éléments qui sont variables des balises comme par exemple <Adresse> et j'utilise la fonction Replace pour remplacer les balises par les données variables
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #4
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut merci les mec
    Je vais tester et voir avec le debugger , j'avoue que j'avais un peu la fleme , mais je vois que vous avez un sacré niveau , par contre pour les balises j'ai pas trop compris , mais je vais chercher je vous tien au courant en tout cas c'est vraiment simpa d'avoir répondu , et des fois avec un peu de repos on trouve plus facilement donc comme c'est un string normalement je peux faire comme dans un range ou on colle les variables a des chaines de caracteres par un & genre "blablabla" & i ";" le point virgule je le met bien entre guillemet a la fin car il est indispensable a ma requete .

    En tout cas merci je n'oublierais pas de valider , par contre j'ai une deuxieme question , il est possible de remplire une base de donnée et plus precisement une colone d'une table a partir des données d'une colonne excel?
    ca pourrais m'interesser pour rentrer mes données.

    en vba ou pas dailleur car si il ya un moyen interessant et assez simple je suis preneur. ( je recupere les données de internet sur excel et ca je sais tres bien le faire , mais j'avoue que le lien vba access , je débute donc je suis pas a l'aise dessus )

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 165
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    par contre pour les balises j'ai pas trop compris
    Un petit exemple sur le pouce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     Dim req As String, Text As String
     req = "Mon site préféré est <LeSite>"
     Text = "Développez.com"
     req = Replace(req, "<LeSite>", Text)
     MsgBox req
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut Eh un petit message a philippe mais pas sur le pouce :p
    Merci bcp pour ton message j'ai appris un truc , je met résolu j'ai reussi ca marche j'avais juste mis une variable dans un mauvais type merci le debugger et l'espion :p surtt
    En tout cas j'espere que ca pourra aider d'autre personne , mon code et ton exemple philippe
    Merci et bonne nuit et surement à trés vite :p

  7. #7
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Billets dans le blog
    17
    Par défaut tjs un probleme aparement
    voici ce que j'ecris et j'ai un msg d'erreur encore sur la ligne qui suis la requete sauf que je sais bien que ca viens de la requete , qui fonctionne tres biens sur access , mais le coup de la variable ... pose probleme.
    J'ai simplifié mon prog , car le i est issu de l'userforme et est saisie par l'user. La on imagine un i en string , je ne vois pas ou est le pb , merci a vous et votre level
    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
    'recuperer une requete sql
    Sub CopyFromRecordset_DAO2()
         Dim Db1 As Database
         Dim Rs1 As Recordset
         Dim requete As String
         Dim i As String
         i = "Action EDF"
         ' Ouverture de la base de données
         Set Db1 = DBEngine.OpenDatabase(ThisWorkbook.Path & "\FinancialDataBase")
         ' Un objet Recordset représente les enregistrements d'une table
         'requette a ecrire :
         '_________________________Requete SQL_________________________________________
         requete = "SELECT Valeur_Max, Valeur_Fermeture " _
    & "FROM Cours, DateCours,SousJacent " _
    & "WHERE Cours.RefC = DateCours.RefC " _
    & "AND SousJacent.RefSJ = DateCours.RefSJ " _
    & "AND DateCours between #01/12/2015# AND #01/16/2015# " _
    & "AND NomSJ = " & i & "; " 
    '_____________________________________________________________________________________
         Set Rs1 = Db1.OpenRecordset(requete, Type:=dbOpenSnapshot) 
         ' Effacement des données existantes dans la WorkSheet (sauf les titres)
         ' et copie des enregistrements
         With Worksheets("Feuil1").Range("B1")
              'With Selection.CurrentRegion
                   'Intersect(.Cells, .Offset(1)).Select
     
              'End With
              .ClearContents
              .CopyFromRecordset Rs1
         End With
         'Fermeture de la Base de données
         Db1.Close
    End Sub

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

Discussions similaires

  1. mettre une variable dans une requête SQL
    Par zaki18mi dans le forum Java ME
    Réponses: 4
    Dernier message: 14/06/2010, 00h40
  2. Comment utiliser des variables dans une requête SQL ?
    Par Ragnarok85 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 12/02/2007, 16h23
  3. Passer une variable dans une requête SQL
    Par Remedy dans le forum C++
    Réponses: 2
    Dernier message: 11/05/2006, 16h48
  4. [CSS] Mettre des variable dans une feuille de style???
    Par Shakta dans le forum Mise en page CSS
    Réponses: 9
    Dernier message: 24/02/2006, 10h39
  5. Nom de champ variable dans une requête SQL
    Par stip dans le forum ASP
    Réponses: 2
    Dernier message: 30/09/2004, 18h02

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