Rechercher : dans
Par :

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

Dernière réponse le 16 jun 2009 à 11:57:31 eXqO, le 15 jun 2009 à 17:00:16 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « [VBA] Récupérer le résultat d'une requête SQL » dans :
Exécution de requêtes avec JDBC VoirExécution d'une requête SQL Pour exécuter une requête SQL, il s'agit dans un premier temps de créer un objet Statement, pouvant être obtenu à partir de l'objet Connection. Un objet ResultSet permettra de récupérer les données en provenance de...
SQL - Tri VoirTri des résultats Il est possible en SQL d'organiser les résultats grâce à la clause ORDER BY. La clause ORDER BY est suivie des mots clés ASC ou DESC, qui précisent respectivement si le tri se fait de manière croissante (par défaut) ou...
SQL - Sous-requêtes VoirExpression des sous-requêtes Effectuer une sous-requête consiste à effectuer une requête à l'intérieur d'une autre, ou en d'autres termes d'utiliser une requête afin d'en réaliser une autre (on entend parfois le terme de requêtes en...

1

michel_m, le 15 jun 2009 à 17:12:08

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... Cordialement, Michel

Répondre à michel_m

2

eXqO, le 15 jun 2009 à 17:22:43

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.

Répondre à eXqO

3

michel_m, le 15 jun 2009 à 18:22:02
  • +1

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
http://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


Cordialement, Michel

Répondre à michel_m

4

 eXqO, le 16 jun 2009 à 11:57:31

Merci beaucoup, ça me permet d'y voir un peu plus clair !

Répondre à eXqO
Collection CommentÇaMarche.net