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 :

Probleme avec une 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
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Par défaut Probleme avec une requete SQL
    Bonjour,
    J'ai un petit souci je cherche à executer une requète SQL dans Excel en VBA.
    J'ai dans ma feuille ERT une colonne Name pour laquelle je voudrais faire une recherche.
    J'ai obtenu une fois ce que je voulais mais j'ai fait une modification et ça ne fonctionne plus, je sais plus comment j'ai fait pour la faire fonctionner.

    J'obtiens erreur 3061 - Erreur définie par l'application ou par l'objet

    Mon code :
    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
     
    Sub DoCmdRunSQL(ByVal sql As String, ByVal rDest As Range)
     
        Dim db As DAO.Database
        Dim rs As DAO.Recordset
     
        Set db = DAO.OpenDatabase(ActiveWorkbook.FullName, False, False, "Excel 
     
    8.0;HDR=YES;")
        Set rs = db.OpenRecordset(sql, DAO.dbOpenSnapshot)
        rDest.CopyFromRecordset rs
        Set rs = Nothing
        Set db = Nothing
     
    End Sub
    Sub test()
        DoCmdRunSQL "SELECT * FROM [ERT$] WHERE Name='toto'", Sheets("Résultat").Range("A1")
    End Sub
    Pourriez-vous m'aider ?
    D'avance merci

  2. #2
    Invité
    Invité(e)
    Par défaut Bonjour,
    ça c'est pas du SQL et ton erreur est là!
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
     DoCmdRunSQL "SELECT * FROM [ERT$] WHERE Name='toto'", Sheets("Résultat").Range("A1")
    ça c'est OK
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     DoCmdRunSQL "SELECT * FROM [ERT$] WHERE Name='toto';"
     DoCmdRunSQL "SELECT * FROM [ERT$] WHERE Name='toto' OR Name='" &  Sheets("Résultat").Range("A1") & "';"

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Par défaut
    D'abord je voudrais vous remercier pour votre aide.
    Votre proposition ne fonctionne pas non plus.

    Je pense que c'est WHERE Name='toto' qui pose problème, si je fais DoCmdRunSQL "SELECT * FROM [ERT$], Sheets("Résultat").Range("A1")
    le résultat de ma "requète" s'affiche très bien dans ma feuille Résultat

  4. #4
    Invité
    Invité(e)
    Par défaut
    ce que tu écris là
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
     "SELECT * FROM [ERT$], Sheets("Résultat").Range("A1")
    revient à faire une requête avec 2 tables.
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM Table1, Table2;
    Comment fais tu le lien entre les table?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM Table1 INNER JOIN Table2 ON Table1.Id = Table2.Id;
    et enfin ta close Where
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT  * FROM Table1 INNER JOIN Table2 ON Table1.Id = Table2.Id WHERE Table1.Champ1='toto';
    tu trouveras le résumé de tous ça en images jointent.
    Images attachées Images attachées    

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2004
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 5
    Par défaut
    Désolé mais je ne cherche pas à faire une requète sur deux tables,
    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
    Sub DoCmdRunSQL(ByVal sql As String, ByVal rDest As Range)
     
        Dim db As DAO.Database
        Dim rs As DAO.Recordset
     
        Set db = DAO.OpenDatabase(ActiveWorkbook.FullName, False, False, "Excel 8.0;HDR=YES;")
        Set rs = db.OpenRecordset(sql, DAO.dbOpenSnapshot)
        rDest.CopyFromRecordset rs
        Set rs = Nothing
        Set db = Nothing
     
    End Sub
    Sub test()
        DoCmdRunSQL "SELECT * FROM [ERT$] WHERE Name='toto'", Sheets("Résultat").Range("A1")
    End Sub
    Dans ma fonction DoCmdRunSQL() mon 2ème arguments (ByVal rDest As Range) indique l'emplacement de l'affichage de mes résultats.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Name est un mot réservé il faut préciser qu'il s'agit de [champ]!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     DoCmdRunSQL "SELECT * FROM [ERT$] where [Name]='TOTO';", Sheets("Résultat").Range("A1")
    si tu encadre toujours tes champ par "[XXXX]" tu n'auras jamais de problème à ce niveau du moins!

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

Discussions similaires

  1. Probleme avec une requete sql
    Par kraven30 dans le forum Requêtes
    Réponses: 8
    Dernier message: 01/02/2011, 16h47
  2. probleme avec une requete SQL
    Par univermina dans le forum ASP
    Réponses: 20
    Dernier message: 07/06/2009, 22h24
  3. Probleme avec une requete sql dans VB6 pour un champ date
    Par jacko842 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/01/2009, 08h31
  4. probleme avec une requete sql
    Par kroma23 dans le forum Bases de données
    Réponses: 18
    Dernier message: 10/01/2009, 14h28

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