Macro Excel appelant une requete SQL sur base Access puis création d'un graphique à 2 axes
1 réponse
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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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.
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.