Macro Excel appelant une requete SQL sur base Access puis création d'un graphique à 2 axes

Le
clario
Bonjour,
Mon problme est simple mais pourtant je ne trouve pas le code qui y
rpondrait.
Premirement je cherche envoyer certaines donnes de Access vers
Excel. Pour ce faire j'ai pens excuter une macro excel partir
de Access. Bon a pour l'instant je pens voir comment faire. Le
problme vient aprs. Il faudrait que ma macro Excel puisse :
- Excuter une requte qui irait puis les informations dans la base
Access.
- Mettre ces informations en forme sachant que le nombre de lignes
obtenues est alatoire.
Ensuite, pour crer mes graphiques il faudrait que j'utilise le
tableau que j'aurais obtenu.

Pour l'instant j'ai fait quelques tests mais je n'arrive pas
accder ma base de donnes.

J'ai essay avec a mais bon je ne suis perplexe. Ma base de donnes
se trouve sur le bureau et plus tard elle se trouvera sur le rseau.
Dans ma table Dossier j'ai une 40aine de champs. Faut-il dessiner le
tableau avant toute chose ou est-ce que cela est automatique ?

Sub DB_CP_Dossier()
Set session = DBEngine.Workspaces(0)
Set DB = opendatabase(ThisWorkbook.Path & "MaBase.mdb")
Set DB_Dossier= DB.OpenRecordset("Dossier", dbopendynaset)
DB_Dossier.MoveLast
DB_Dossier.MoveFirst

For x = 1 To DB_Dossier.RecordCount
Worksheets("Statistiques").Cells(x + 1, 2).Value =
DB_Dossier.Fields("NoDssier").Value
Worksheets("Statistiques").Cells(x + 1, 3).Value =
DB_Dossier.Fields("CODCOLLEC").Value
Worksheets("Statistiques").Cells(x + 1, 4).Value =
DB_Dossier.Fields("MontantSubvention").Value
DB_Dossier.MoveNext
Next x
DB_Dossier.Close
DB.Close
Columns("B:D").Select
selection.Sort Key1:=Range("C2"), Order1:=xlAscending,
Key2:=Range("D2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1,
MatchCase:= _
False, Orientation:=xlTopToBottom
Range("A1").Select


Pour rsumer, je n'ai pas trop compris le mcanisme de tout ceci.
Merci de m'aider.

  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
JFrancois QC
Le #3814951
Bonjour Clario,
Je te suggère deux avenues :
A) Menu DonnéesDonnées externes... qui ne requiert pas de programmation
B) ADO (active X Data Object ) .... pour plus d'info tape ADO+Excel sur Google

Bonne chance


Bonjour,
Mon problème est simple mais pourtant je ne trouve pas le code qui y
répondrait.
Premièrement je cherche à envoyer certaines données de Access vers
Excel. Pour ce faire j'ai pensé à exécuter une macro excel à partir
de Access. Bon ça pour l'instant je pens voir comment faire. Le
problème vient après. Il faudrait que ma macro Excel puisse :
- Exécuter une requête qui irait puisé les informations dans la base
Access.
- Mettre ces informations en forme sachant que le nombre de lignes
obtenues est aléatoire.
Ensuite, pour créer mes graphiques il faudrait que j'utilise le
tableau que j'aurais obtenu.

Pour l'instant j'ai fait quelques tests mais je n'arrive pas à
accéder à ma base de données.

J'ai essayé avec ça mais bon je ne suis perplexe. Ma base de données
se trouve sur le bureau et plus tard elle se trouvera sur le réseau.
Dans ma table Dossier j'ai une 40aine de champs. Faut-il dessiner le
tableau avant toute chose ou est-ce que cela est automatique ?

Sub DB_CP_Dossier()
Set session = DBEngine.Workspaces(0)
Set DB = opendatabase(ThisWorkbook.Path & "MaBase.mdb")
Set DB_Dossier= DB.OpenRecordset("Dossier", dbopendynaset)
DB_Dossier.MoveLast
DB_Dossier.MoveFirst

For x = 1 To DB_Dossier.RecordCount
Worksheets("Statistiques").Cells(x + 1, 2).Value > DB_Dossier.Fields("NoDssier").Value
Worksheets("Statistiques").Cells(x + 1, 3).Value > DB_Dossier.Fields("CODCOLLEC").Value
Worksheets("Statistiques").Cells(x + 1, 4).Value > DB_Dossier.Fields("MontantSubvention").Value
DB_Dossier.MoveNext
Next x
DB_Dossier.Close
DB.Close
Columns("B:D").Select
selection.Sort Key1:=Range("C2"), Order1:=xlAscending,
Key2:=Range("D2") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1,
MatchCase:= _
False, Orientation:=xlTopToBottom
Range("A1").Select


Pour résumer, je n'ai pas trop compris le mécanisme de tout ceci.
Merci de m'aider.




Publicité
Poster une réponse
Anonyme