[VBA] Récupérer le résultat d'une requête SQL

eXqO Messages postés 54 Statut Membre -  
eXqO Messages postés 54 Statut Membre -
Bonjour,

Tout d'abord je tiens à préciser que je suis novice en VBA ! ;)
Voici mon problème, je suis en possession d'une requête SQL qui me fournie un certain nombre de statistique que j'aimerai incorporer dans un tableau Excel à l'aide d'une macro (je précise que ça se fera de façon régulière, toute les semaine)

J'ai beau chercher sur internet avec mon ami Google...j'ai pas trouvé grand chose pour m'aider à part l'objet QueryDef dont l'utilisation n'a pas été comprise...:s

Merci d'avance !
Configuration: Windows XP
Firefox 3.0.11

4 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Re,

    il te faut trouver comment te connecter à ta database; je n'ai pas trouver le script pour PL:SQL mais peut-être que ceux d'oracle conviennent. regarde ce site
    https://www.connectionstrings.com/

    Je te mets ci dessous un extrait d' exemple très basique " pour le principe" de requête avec ADO dans une base de données nommée "plage"(excel en l'occurence)
    le résultat s"inscrit à partir de la cellule A2 dans excel
    la partie connexion est en italique à remplacer par ton script de connexion à PL/

    Dim source As Object
    Dim requete As Object
    Dim texte_SQL As String
    test = plage
    'connexion ADO au fichier
    Set source = CreateObject("ADODB.Connection")
        source.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & chemin & fich & ";Extended Properties=""Excel 8.0;HDR=no;"";"
        
    'exerce la requete ADO sur la donnée à recopier
        texte_SQL = "SELECT * FROM [" & plage & "] "
        Set requete = CreateObject("ADODB.Recordset")
        Set requete = source.Execute(texte_SQL)
        
    'recopie les données du fichier
        Cells(2, 1).CopyFromRecordset requete
    
    'f'erme la connexion ADO
    Set requete = Nothing
    Set source = Nothing


    1
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    OK, mais quelle est cette requ^te SQL, à quelle base de données te connectes tu etc. etc. etc.

    merci d'être plus précis...
    0
  3. eXqO Messages postés 54 Statut Membre 2
     
    Voilà la requête SQL que j'ai :

    select m.mp_l, count(*), sum(c.cde_tot_ttc)
    from e_cde c, e_mode_paiement m
    where c.cde_ty_se_c = 'WV2'
    and c.cde_mp_c in ('KM','KI','KW','KT', 'KA','KC', 'CA')
    and c.cde_mp_c = m.mp_c
    --and c.cde_d between to_date('&date', 'dd/mm/yyyy hh24:mi:ss') -6
    --and to_date('&date', 'dd/mm/yyyy hh24:mi:ss')
    and c.cde_d between to_date('01/06/2009 00:00:01', 'dd/mm/yyyy hh24:mi:ss')
    and to_date('07/06/2009 23:59:59', 'dd/mm/yyyy hh24:mi:ss')
    group by m.mp_l
    order by 1

    Je me connecte à PL/SQL Developer. La date sera a automatiser aussi.
    Mais mon problème principal reste d'interroger cette requête via Excel.

    Cordialement,
    Clément.
    0
  4. eXqO Messages postés 54 Statut Membre 2
     
    Merci beaucoup, ça me permet d'y voir un peu plus clair !
    0