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 :

Méthode ADODB pour afficher dans EXCEL une requête SQL executée dans une base de données ACCESS


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut Méthode ADODB pour afficher dans EXCEL une requête SQL executée dans une base de données ACCESS
    Bonjour,

    Je souhaite executer depuis une macro EXCEL une reqûete SQL sur une base de données ACCESS. La requête SQL fonctionne, je l'ai testé mais j'éprouve des difficultés à mettre en place la macro dans EXCEL.
    Mon but est de pouvoir ensuite travailler sur une feuille EXCEL les données séléctionnées par la requête SQL.

    Au lancement du code, j'obtiens une erreur sur rst.Open Kaquery, cnx : "Aucune valeur donnée pour l'un des paramètres".

    Si vous avez des suggestions sur le reste du code, merci d'avance.


    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
    Sub macro1()
     
    'Déclaration des variables
    Dim cnx As ADODB.Connection
    Dim rst As ADODB.Recordset
    Dim query As String
     
    'Instanciation des variables
    Set cnx = New ADODB.Connection
    Set rst = New ADODB.Recordset
     
    'Définition du pilote de connexion
    cnx.Provider = "Microsoft.Jet.Oledb.4.0"
    'Définition de la chaîne de connexion
    cnx.ConnectionString = "D:\Documents\DOC\mabase.MDB"
    'Ouverture de la base de données
    cnx.Open
     
    'Ecriture de la requête
    query = "SELECT DISTINCT com_el.sat_name, com_el.long_nom, freq.ntc_id, com_el.adm, com_el.prov, com_el.act_code, pub_ssn.ssn_ref " & _
    "FROM (freq INNER JOIN com_el ON freq.ntc_id = com_el.ntc_id) INNER JOIN pub_ssn ON com_el.ntc_id = pub_ssn.ntc_id " & _
    "WHERE (((com_el.adm) <> " & "F" & ")) " & _
    "GROUP BY com_el.sat_name, com_el.long_nom, freq.ntc_id, com_el.adm, com_el.prov, com_el.act_code, pub_ssn.ssn_ref, freq.freq_mhz, pub_ssn.seq_no " & _
    "HAVING (((com_el.prov)=" & "9.6" & ") AND ((com_el.act_code)=" & "A" & " Or (com_el.act_code)=" & "M" & ") AND ((pub_ssn.ssn_ref)=" & "CR/C" & ") AND ((pub_ssn.seq_no)=1) AND (([freq]![freq_mhz]) Between 17300 And 20200 Or ([freq]![freq_mhz]) Between 18100 And 18400 Or ([freq]![freq_mhz]) Between 24750 And 25250 Or ([freq]![freq_mhz]) Between 27000 And 31000)) " & _
    "ORDER BY com_el.long_nom;"
     
    'Exécution de la requête
    rst.Open Kaquery, cnx
     
    rst.MoveLast
    rst.MoveFirst
     
    While Not (rst.EOF)
        rst.MoveNext
    Wend
     
    rst.Close
    cnx.Close
     
     
    End Sub

  2. #2
    Futur Membre du Club
    Inscrit en
    Mai 2009
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    J'ai résolu le problème mis à part le point suivant, je parviens à extraire ce que je souhaite dans excel.

    Par contre je suis obligé d'utiliser la requête depuis ACCESS ("Select * FROM marequete"), et donc je ne l'ai pas directement dans ma macro.

    J'ai trouvé ce lien http://user.services.openoffice.org/...hp?f=15&t=1454 pour open office mais pas d'équivalent, le problème est donc la mise en forme de la requête pour la passer depuis ACCESS vers EXCEL.

    Avez-vous connaissance des subtilités ?

    Voilà la requête au format SQL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT DISTINCT com_el.sat_name, com_el.long_nom, freq.ntc_id, com_el.adm, com_el.prov, com_el.act_code, pub_ssn.ssn_ref
    FROM (freq INNER JOIN com_el ON freq.ntc_id = com_el.ntc_id) INNER JOIN pub_ssn ON com_el.ntc_id = pub_ssn.ntc_id
    WHERE (((com_el.adm)<>"F"))
    GROUP BY com_el.sat_name, com_el.long_nom, freq.ntc_id, com_el.adm, com_el.prov, com_el.act_code, pub_ssn.ssn_ref, freq.freq_mhz, pub_ssn.seq_no
    HAVING (((com_el.prov)="9.6") AND ((com_el.act_code)="A" Or (com_el.act_code)="M") AND ((pub_ssn.ssn_ref)="CR/C") AND ((pub_ssn.seq_no)=1) AND (([freq]![freq_mhz]) Between 17300 And 20200 Or ([freq]![freq_mhz]) Between 18100 And 18400 Or ([freq]![freq_mhz]) Between 24750 And 25250 Or ([freq]![freq_mhz]) Between 27000 And 31000))
    ORDER BY com_el.long_nom;

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/12/2010, 12h42
  2. Réponses: 26
    Dernier message: 17/07/2008, 14h17
  3. [SQL] affichage d'une requête sql dans un tableau
    Par benvegu dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 21/02/2008, 14h01
  4. [SQL] Choix dans une liste déroulante issue d'une requête SQL
    Par Moustic74 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 01/06/2007, 14h06
  5. Réponses: 15
    Dernier message: 11/05/2007, 15h28

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