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 :

Syntaxe SQL avec méthode ADO


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 19
    Par défaut Syntaxe SQL avec méthode ADO
    Bonjour le forum,


    Petite question rapide mais je n'arrive pas à voir comment faire

    Je lis des données dans un classeur fermé, mais la syntaxe de ma requête n'est pas bonne. Un SELECT * FROM [" & NomFeuille & "$] marche très bien, mais je dois rajouter un WHERE, avec la valeur d'une variable :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    texte_SQL = "SELECT * FROM [" & NomFeuille & "$] WHERE" & Range("B4:B100").Text = "& D"
    Je pense que le problème vient de la variable D que j'ai mal intégré à la requête.

    Merci d'avance !

  2. #2
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut
    Bonjour
    si la variable D est string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sql = "SELECT * FROM [" & NomFeuille & "$] WHERE Range("B4:B100").Text = '"& D & "'"
    Abed_H

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 19
    Par défaut
    Merci de ta réponse ! J'ai mis ta requête à la place de la mienne, mais il me marque erreur de syntaxe

    il faut que je mette automatiquement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WHERE" & Range("B4:B100").Text
    Les dquote et le et commercial sont obligatoires. j'ai laissé la suite, mais ça me met la même erreur à l'exécution, à ce niveau là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set Rst = Cn.Execute(texte_SQL)
    --> Instruction SQL Non Valide...

    Vive les requêtes

  4. #4
    Expert confirmé
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Par défaut
    Hello,

    mais que renvoie : Range("B4:B100").Text ?

  5. #5
    Membre chevronné
    Inscrit en
    Janvier 2008
    Messages
    483
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 483
    Par défaut
    si le champ B4:B100 a un nom exemple Code tu indique ce nom.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sql = "SELECT * FROM [" & NomFeuille & "$] WHERE Code = '"& D & "'"
    voici un exemple
    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
    Sub SelectionDonnées()	
      Dim Cn As ADODB.Connection	
      Dim Rst As ADODB.Recordset	
            Dim Feuille As String, strSQL As String	
            Dim Code As String	
            Feuille = "Feuil3"	
     
        Code = "D1403"	
        fichDest = ThisWorkbook.FullName	
     
        Set Cn = New ADODB.Connection	
        Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _	
                   "Data Source=" & fichDest & ";" & _	
                   "Extended Properties=""Excel 8.0;HDR=YES;IMEX=2;"""	
     
     strSQL = "Select * from [" & Feuille & "$] WHERE Codec = '" & Code & "' "	
     
            Set Rst = New ADODB.Recordset	
            Set Rst = Cn.Execute(strSQL)	
     
     Range("A15").CopyFromRecordset Rst	
     Cn.Close	
     Set Cn = Nothing	
    End Sub
    Bonne journée

    Abed_H

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 19
    Par défaut
    Alors Range("B4:B100") contient donc des cellules contenant des chaînes.
    Par exemple les jours de la semaine. Dans ma variable D je mets "Mardi".
    En clair ma requête serait de prendre tout ce qui figure sur la feuille, uniquement pour ce qui concerne le Mardi ^^

    La variable "Code" est donc ma variable "D".

  7. #7
    Membre Expert Avatar de Jean-Pierre49
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2007
    Messages
    659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2007
    Messages : 659
    Par défaut
    bonjour

    il me semble Que Where ne compare que deux valeurs uniques
    La tu teste x valeurs à une autre unique

    il faudrait à mon sens faire une sous requête ou boucler sur ta plage
    avec un test sur ta valeur recherchée
    et effectuer ta requête a chaque fois que le test est vrai



    Jean-Pierre

Discussions similaires

  1. [XL-2003] Copie d'une feuille avec méthode ADO
    Par Monfy29 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 18/01/2011, 17h26
  2. [AC-2003] Requête sql avec méthode DoCmd.Runsql bloqué dans une transaction
    Par rana dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 09/03/2010, 13h20
  3. Réponses: 6
    Dernier message: 27/07/2009, 05h14
  4. [MySQL] syntaxe SQL avec un update
    Par Miaou le chat thon dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/08/2008, 21h48
  5. [SQL] probleme de syntaxe sql avec php
    Par kaygee dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 05/06/2006, 14h32

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