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

Exporter le resultat d'une query dans une cellule precise d'excel 2007

6 réponses
Avatar
max-75
Bonjour,

J'avance dans mon projet d'appli de reporting.
J'ai =E0 peu pres tous les elements et je souhaiterais automatiser le
tout.
Pourriez vous m'aider avec un code qui en appuyant sur commandbutton1:
1/ lance les query "direct sql" (pass through query dans l'interface
US) dont je lui indique les noms (en dure dans le code si necessaire
ou par une table) ex: sqldirect1, sqldirect4....
2/ lance les querys "create table" (je ne connais pas le nom en
francais) dont je lui indique les noms. ex mktbl3, mktbl15....
3/ lance chaque query parametr=E9e via mon formulaire dans une cellule
precise d'un template excel 2007qui sert =E0 l'analyse du dashboard. la
cellule sera la premiere en haut =E0 gauche. il pourra s'agir de query
de selection de graph ou de tableau.

A toutes fins utiles je suis sous access 2003 (interface us) et excel
2007

Les codes que j'ai pu trouver jusqu'ici ne repondaient pas =E0 mon
besoin et/ou je n'ai pas su les adapter...

Merci d'avance,

Max

6 réponses

Avatar
Blaise Cacramp
Selon : Bonjour ou bonsoir

Tout d'abord un exemple VBA pour manipuler Excel par Access (ne pas oublier
de référencer Excel dans l'IDE)
«
Sub Test_xl4()
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim L As Long
Dim C As Integer

Dim sSql As String
Dim Rst As New ADODB.Recordset

'Vos requêtes actions
DoCmd.SetWarnings False

sSql = "UPDATE (...)" _
& " WHERE (...);"
DoCmd.RunSQL sSql

sSql = "UPDATE (...)" _
& " WHERE (...);"
DoCmd.RunSQL sSql

sSql = "UPDATE (...)" _
& " WHERE (...);"
DoCmd.RunSQL sSql

DoCmd.SetWarnings True

' avec ADO, ici select
sSql = "SELECT Tbl_Poste.CP_Code, Tbl_Poste.CP_Localite" _
& " FROM Tbl_Poste;"
Rst.Open sSql, CurrentProject.Connection, adOpenStatic
If Rst.EOF Then
Beep
MsgBox "pas d'enregistrements"
Exit Sub 'pas d'enregistrements
Else
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = false ' ou true( plus rapide dans le cas d'un grand
tableau, quand la routine est au point)
Set xlBook = xlApp.Workbooks.Add 'dans le cas d'un classeur
vierge
' ou Set xlBook = xlApp.Workbooks.Open("x:cheminnom.xlt") 'dans le
cas d'un modèle
' Ecrire quelques valeurs
Set xlSheet = xlBook.Worksheets("Feuil1") 'ou son vrai nom dans
un modèle (conseillé)

With xlSheet
For L = 1 To Rst.RecordCount
For C = 1 To 2
.Cells(L, C) = Rst(C - 1)
Next C
If Not Rst.EOF Then Rst.MoveNext
Next L
End With
MsgBox "fini ! "
xlApp.Visible = True
' Libérer les variables objet
Rst.Close
Set Rst = Nothing
Set xlSheet = Nothing
Set xlBook = Nothing
Set xlApp = Nothing
End If
End Sub
»

Ensuite pour ADO, j'ai un truc sous le coude, mais au bureau. Donc pas
l'adresse aujourd'hui.
Sinon, une recherche sur WEB va t'aider.

Cdt, Blaise
---- ---- ----


"max-75" a écrit dans le message de news:

Bonjour,

J'avance dans mon projet d'appli de reporting.
J'ai à peu pres tous les elements et je souhaiterais automatiser le
tout.
Pourriez vous m'aider avec un code qui en appuyant sur commandbutton1:
1/ lance les query "direct sql" (pass through query dans l'interface
US) dont je lui indique les noms (en dure dans le code si necessaire
ou par une table) ex: sqldirect1, sqldirect4....
2/ lance les querys "create table" (je ne connais pas le nom en
francais) dont je lui indique les noms. ex mktbl3, mktbl15....
3/ lance chaque query parametrée via mon formulaire dans une cellule
precise d'un template excel 2007qui sert à l'analyse du dashboard. la
cellule sera la premiere en haut à gauche. il pourra s'agir de query
de selection de graph ou de tableau.

A toutes fins utiles je suis sous access 2003 (interface us) et excel
2007

Les codes que j'ai pu trouver jusqu'ici ne repondaient pas à mon
besoin et/ou je n'ai pas su les adapter...

Merci d'avance,

Max
Avatar
blaise cacramp
>
Ensuite pour ADO, http://waltermilner.com/downloads/VBA/ADO%20VBA%20Programming%20in%20Access.ppt


Avatar
max-75
On Nov 13, 9:31 am, blaise cacramp wrote:
> Ensuite pour ADO,http://waltermilner.com/downloads/VBA/ADO%20VBA%20Prog ramming%20in%20...- Hide quoted text -

- Show quoted text -



Merci Blaise pour ce code et le ppt tres pedagogique.
Questions subsidiaires:
1/ Est-il possible de specifier pour chaque requete une cellule de
destination specifique?
ex: la requete Qry1 qui contient 3 champs sera exportee en A2 (donc
A2:C2).
La requete Qr2 commencera en E2 et suivante...etc.
L'idee est de localiser precisement les exports car mon modele
contient un joli onglet de resume tout en couleur rempli de rechercheV
qui va lire les datas.
Il y a trop de requetes à mon gout pour en faire 1 par onglet.

2/ Est ce que celà fonctionne avec des tableaux croises et des graphs?
celà permetrait de les positionner precisement. (Sinon, je verrai avec
un autre script).

merci d'avance,

Max
Avatar
max-75
On Nov 13, 11:12 am, max-75 wrote:
On Nov 13, 9:31 am, blaise cacramp wrote:

> > Ensuite pour ADO,http://waltermilner.com/downloads/VBA/ADO%20VBA%20Pr ogramming%20in%20...Hide quoted text -

> - Show quoted text -

Merci Blaise pour ce code et le ppt tres pedagogique.
Questions subsidiaires:
1/ Est-il possible de specifier pour chaque requete une cellule de
destination specifique?
ex: la requete Qry1 qui contient 3 champs sera exportee en A2 (donc
A2:C2).
La requete Qr2 commencera en E2 et suivante...etc.
L'idee est de localiser precisement les exports car mon modele
contient un joli onglet de resume tout en couleur rempli de rechercheV
qui va lire les datas.
Il y a trop de requetes à mon gout pour en faire 1 par onglet.

2/ Est ce que celà fonctionne avec des tableaux croises et des graphs?
celà permetrait de les positionner precisement. (Sinon, je verrai avec
un autre script).

merci d'avance,

Max



Blaise,
l'export fonctionne bien à ceci pres qu'il ne m'a exporte que les 2
premieres colonnes.
il est possble que le 3e champs de la premiere ligne de la query soit
vide...c'est peut etre la raison.
si en plus, je peux specifier l'adresse celà serait parfait!

merci

max
Avatar
Blaise Cacramp
Selon : Bonjour ou bonsoir



Dans la ligne .Cells(L, C) = Rst(C - 1)

Tu positionnes le retour dans la cellule à la ligne L et la colonne C. Par
exemple B5 sera .Cell(5,2)

Rst(X) Retourne le champ pour X = 0 jusqu'au nombre de colonnes de la
requête -1
Tu peux aussi utiliser la syntaxe Rst("NomDeChamp")

Tu peux utiliser successivement plusieurs requêtes pour remplir tes
cellules.

sSql="..."
rst.open
.cell(L,C)=Rst(...)
rst.close

sSql = "...

Voilà Max, mais renseigne-toi un minimum sur le VBA : un bouquin ou une
formation.


Cdt, Blaise
---- ---- ----


"max-75" a écrit dans le message de news:

On Nov 13, 11:12 am, max-75 wrote:
On Nov 13, 9:31 am, blaise cacramp wrote:

> > Ensuite pour
> > ADO,http://waltermilner.com/downloads/VBA/ADO%20VBA%20Programming%20in%20...Hide
> > quoted text -

> - Show quoted text -

Merci Blaise pour ce code et le ppt tres pedagogique.
Questions subsidiaires:
1/ Est-il possible de specifier pour chaque requete une cellule de
destination specifique?
ex: la requete Qry1 qui contient 3 champs sera exportee en A2 (donc
A2:C2).
La requete Qr2 commencera en E2 et suivante...etc.
L'idee est de localiser precisement les exports car mon modele
contient un joli onglet de resume tout en couleur rempli de rechercheV
qui va lire les datas.
Il y a trop de requetes à mon gout pour en faire 1 par onglet.

2/ Est ce que celà fonctionne avec des tableaux croises et des graphs?
celà permetrait de les positionner precisement. (Sinon, je verrai avec
un autre script).

merci d'avance,

Max



Blaise,
l'export fonctionne bien à ceci pres qu'il ne m'a exporte que les 2
premieres colonnes.
il est possble que le 3e champs de la premiere ligne de la query soit
vide...c'est peut etre la raison.
si en plus, je peux specifier l'adresse celà serait parfait!

merci

max
Avatar
max-75
On Nov 13, 5:04 pm, "Blaise Cacramp" wrote:
Selon : Bonjour ou bonsoir

Dans la ligne       .Cells(L, C) = Rst(C - 1)

Tu positionnes le retour dans la cellule à la ligne L et la colonne C.  Par
exemple B5 sera .Cell(5,2)

Rst(X) Retourne le champ pour X = 0 jusqu'au nombre de colonnes de la
requête -1
Tu peux aussi utiliser la syntaxe Rst("NomDeChamp")

Tu peux utiliser successivement plusieurs requêtes pour remplir tes
cellules.

sSql="..."
rst.open
.cell(L,C)=Rst(...)
rst.close

sSql = "...

Voilà Max, mais renseigne-toi un minimum sur le VBA : un bouquin ou une
formation.

Cdt, Blaise
----   ----   ----

"max-75" a écrit dans le message de news:

On Nov 13, 11:12 am, max-75 wrote:





> On Nov 13, 9:31 am, blaise cacramp wrote:

> > > Ensuite pour
> > > ADO,http://waltermilner.com/downloads/VBA/ADO%20VBA%20Programming%2 0in%20...
> > > quoted text -

> > - Show quoted text -

> Merci Blaise pour ce code et le ppt tres pedagogique.
> Questions subsidiaires:
> 1/ Est-il possible de specifier pour chaque requete une cellule de
> destination specifique?
> ex: la requete Qry1 qui contient 3 champs sera exportee en A2 (donc
> A2:C2).
> La requete Qr2 commencera en E2 et suivante...etc.
> L'idee est de localiser precisement les exports car mon modele
> contient un joli onglet de resume tout en couleur rempli de rechercheV
> qui va lire les datas.
> Il y a trop de requetes à mon gout pour en faire 1 par onglet.

> 2/ Est ce que celà fonctionne avec des tableaux croises et des graphs ?
> celà permetrait de les positionner precisement. (Sinon, je verrai ave c
> un autre script).

> merci d'avance,

> Max

Blaise,
l'export fonctionne bien à ceci pres qu'il ne m'a exporte que les 2
premieres colonnes.
il est possble que le 3e champs de la premiere ligne de la query soit
vide...c'est peut etre la raison.
si en plus, je peux specifier l'adresse celà serait parfait!

merci

max- Hide quoted text -

- Show quoted text -



Super!
Merci infiniment.
J'ai effectivement demande une formation. J'apprends sur le tas les
possibilite qu'offrent l'interface d'Access... J'avoue qu'au debut je
ne m'attendais pas à ce qu'il faille utiliser VBA pour parametrer
precisement l'export. (j'ai bien vu tout ce qui est
transferspreadsheet and co...). J'avais besoin de cette fonction
'rentabiliser' un minimun le temps passe sur mon projet.

Mille fois merci encore!

cdt