Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

1 réponse
Avatar
clario
Bonjour,
Mon probl=E8me est simple mais pourtant je ne trouve pas le code qui y
r=E9pondrait.
Premi=E8rement je cherche =E0 envoyer certaines donn=E9es de Access vers
Excel. Pour ce faire j'ai pens=E9 =E0 ex=E9cuter une macro excel =E0 partir
de Access. Bon =E7a pour l'instant je pens voir comment faire. Le
probl=E8me vient apr=E8s. Il faudrait que ma macro Excel puisse :
- Ex=E9cuter une requ=EAte qui irait puis=E9 les informations dans la base
Access.
- Mettre ces informations en forme sachant que le nombre de lignes
obtenues est al=E9atoire.
Ensuite, pour cr=E9er 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 =E0
acc=E9der =E0 ma base de donn=E9es.

J'ai essay=E9 avec =E7a mais bon je ne suis perplexe. Ma base de donn=E9es
se trouve sur le bureau et plus tard elle se trouvera sur le r=E9seau.
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 =3D DBEngine.Workspaces(0)
Set DB =3D opendatabase(ThisWorkbook.Path & "\MaBase.mdb")
Set DB_Dossier=3D DB.OpenRecordset("Dossier", dbopendynaset)
DB_Dossier.MoveLast
DB_Dossier.MoveFirst

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


Pour r=E9sumer, je n'ai pas trop compris le m=E9canisme de tout ceci.
Merci de m'aider.

1 réponse

Avatar
JFrancois QC
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.