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

créer un fichier excel

17 réponses
Avatar
eric.zzzz
Bonjour,
J'arrive sans probl=E8me =E0 cr=E9er un fichier Excel en passant par : clic
droit sur le bouton de commande de mon formulaire/Propri=E9t=E9s/
g=E9n=E9rateur de Macro.../Action/Transf=E9rerFeuilleCalcul/, etc...
Je souhaiterais le faire avec du code VBA :
Private Sub Commande8_Click()
Dim xlApp1 As Excel.Application
Dim wkb As Excel.Workbook

Set xlApp1 =3D GetObject(, "Excel.Application")
StrSQL =3D "SELECT Tab1.Niveau FROM Tab1WHERE Tab1.GS_dorigine =3D " &
Me.GS_dorigine & ""

CurrentDb.QueryDefs("StrSQL").SQL =3D StrSQL
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, "StrSQL",
"D:\Baf\Tableau1.xls", True

Set xlApp1 =3D CreateObject("Excel.Application")
xlApp1.Visible =3D True
Set wkb =3D xlApp1.workbooks.Open("D:\Baf\Tableau1.XLS")
End Sub

Excel s'ouvre, mais je constate qu'aucun (classeur) fichier excel n'a
=E9t=E9 g=E9n=E9r=E9.
Si qq'un a la solution ?
Merci d'avance
Eric

10 réponses

1 2
Avatar
3stone
Salut,

J'arrive sans problème à créer un fichier Excel en passant par : clic
droit sur le bouton de commande de mon formulaire/Propriétés/
générateur de Macro.../Action/TransférerFeuilleCalcul/, etc...
Je souhaiterais le faire avec du code VBA :
Private Sub Commande8_Click()
Dim xlApp1 As Excel.Application
Dim wkb As Excel.Workbook

Set xlApp1 = GetObject(, "Excel.Application")
StrSQL = "SELECT Tab1.Niveau FROM Tab1WHERE Tab1.GS_dorigine = " &
Me.GS_dorigine & ""

CurrentDb.QueryDefs("StrSQL").SQL = StrSQL
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, "StrSQL",
"D:BafTableau1.xls", True
----------------

non, utilise une requête enregistrée...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
eric.zzzz
On 18 mar, 23:58, "3stone" wrote:
Private Sub Commande8_Click()
Dim xlApp1  As Excel.Application
Dim wkb As Excel.Workbook

Set xlApp1 = GetObject(, "Excel.Application")
StrSQL = "SELECT Tab1.Niveau FROM Tab1WHERE Tab1.GS_dorigine = " &
Me.GS_dorigine & ""

CurrentDb.QueryDefs("StrSQL").SQL = StrSQL
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8, "StrSQL",
"D:BafTableau1.xls", True
----------------

non, utilise une requête enregistrée...


Je ne sais pas ce que c'est qu'une requête enregistrée (je suis
débutant en VBA...)
J'ai vu qu'on pouvait convertir les macro en VB et voilà ce que ça m'a
donné :
DoCmd.TransferSpreadsheet acExport, 8, "Nomdemarequete", "D:Baf
Tableau1", True, ""
Call Shell("excel.exe D:BafTableau1", 1)
Commande81_Click_Err: MsgBox Error$, etc...
MAis lorsque je remplace le code ci-dessus par :
StrSQL = "SELECT Tab1.Niveau FROM Tab1 WHERE Tab1.GS_dorigine = " &
Me.GS_dorigine & ""
DoCmd.TransferSpreadsheet acExport, 8, "StrSQL ", "D:BafTableau1",
True, ""
Call Shell("excel.exe D:BafTableau1", 1)...
le DoCmd ne s'exécute pas et le code saute au message d'erreur : "le
moteur ...n'a pas pu trouver l'objet 'StrSQL'..."

Avatar
Gilles MOUGNOZ
Bonjour, Eric

En enlevant les " (double quote) qui entourent strSQL dans l'instruction
DoCmd, cela devrait aller mieux.

C'est OK ?
--
Bonne continuation
-------------------------------------------------------------------------------------------
http://www.mpfa.info : c'est bonheur pour ton ordinateur !
-------------------------------------------------------------------------------------------

...
DoCmd.TransferSpreadsheet acExport, 8, "StrSQL ", "D:BafTableau1",
True, ""
...
le DoCmd ne s'exécute pas et le code saute au message d'erreur : "le
moteur ...n'a pas pu trouver l'objet 'StrSQL'..."


Avatar
eric.zzzz
On 19 mar, 10:36, "Gilles MOUGNOZ"
wrote:
Bonjour, Eric

En enlevant les " (double quote) qui entourent strSQL dans l'instruction
DoCmd, cela devrait aller mieux.

C'est OK ?


J'y avais pensé figure-toi...J'ai le même message, sauf que c'est : le
moteur ...n'a pas pu trouver l'objet 'SELECT Tab1.Niveau FROM Tab1
WHERE Tab1.GS_dorigine "1' -->on voit qu'il n'y a pas d'erreur dans
la requete, car 221 correspond bien à Me.GS_dorigine
La cause du problème, je la connais, vu que si je créée une requete en
dur, ça marche sans problème...Donc, il me manquerait une ligne de
code ?...En rajoutant CurrentDb.QueryDefs("StrSQL").SQL = StrSQL avant
DoCmd, le message est : Element non trouvé dans cette collection

Avatar
Fabien
On 19 mar, 10:36, "Gilles MOUGNOZ"
wrote:
Bonjour, Eric

En enlevant les " (double quote) qui entourent strSQL dans l'instruction
DoCmd, cela devrait aller mieux.

C'est OK ?


J'y avais pensé figure-toi...J'ai le même message, sauf que c'est : le
moteur ...n'a pas pu trouver l'objet 'SELECT Tab1.Niveau FROM Tab1
WHERE Tab1.GS_dorigine "1' -->on voit qu'il n'y a pas d'erreur dans
la requete, car 221 correspond bien à Me.GS_dorigine
La cause du problème, je la connais, vu que si je créée une requete en
dur, ça marche sans problème...Donc, il me manquerait une ligne de
code ?...En rajoutant CurrentDb.QueryDefs("StrSQL").SQL = StrSQL avant
DoCmd, le message est : Element non trouvé dans cette collection

Salut Eric

Question toute bête : la requete StrSQL existe t elle ?
@+


Avatar
eric.zzzz
On 20 mar, 08:15, Fabien wrote:

Question toute bête : la requete StrSQL existe t elle ?
Mais bien sûr (voir mon 1er message) --> StrSQL = "SELECT Tab1.Niveau

FROM Tab1 WHERE Tab1.GS_dorigine = " &
Me.GS_dorigine & ""
Maintenant si tu veux dire est-ce que j'ai créé la requete qui
s'appelle StrSQL avec l'interface graphique, c'est NON...
Par contre, j'ai créé, pour tester, avec l'interface graphique une
requete non dynamique (WHERE Tab1.GS_dorigine ="221") et là, pas de
problème, ça marche (DoCmd.TransferSpreadsheet acExport, 8,
"Nomdemarequete", "D:Baf
Tableau1", True, "")...

Avatar
Fabien
On 20 mar, 08:15, Fabien wrote:

Question toute bête : la requete StrSQL existe t elle ?
Mais bien sûr (voir mon 1er message) --> StrSQL = "SELECT Tab1.Niveau

FROM Tab1 WHERE Tab1.GS_dorigine = " &
Me.GS_dorigine & ""
Maintenant si tu veux dire est-ce que j'ai créé la requete qui
s'appelle StrSQL avec l'interface graphique, c'est NON...
Par contre, j'ai créé, pour tester, avec l'interface graphique une
requete non dynamique (WHERE Tab1.GS_dorigine ="221") et là, pas de
problème, ça marche (DoCmd.TransferSpreadsheet acExport, 8,
"Nomdemarequete", "D:Baf
Tableau1", True, "")...
Ben voilà ;-)

Il faut qu'une requete créé par l'interface graphique existe pour
pouvoir être par la suite modifiée en VBA par
Currentdb.querydefs("Nomdunerequeteexistante").sql="......."
@+


Avatar
Gilles MOUGNOZ
Bonjour, Eric
Tel que je vois la chose, l'instruction "DoCmd.TransferSpreadsheet" ne
semble accepter qu'une table ou une requête enregistrée comme paramètre.
Inspire-toi du code sur le lien suivant pour créer une requête temporaire,
exécuter ton export et supprimer la requête:
http://access.developpez.com/faq/?page=Excel#ExpExclReq
--
Bonne continuation
-------------------------------------------------------------------------------------------
http://www.mpfa.info : c'est bonheur pour ton ordinateur !
-------------------------------------------------------------------------------------------
Mais bien sûr (voir mon 1er message) --> StrSQL = "SELECT Tab1.Niveau
FROM Tab1 WHERE Tab1.GS_dorigine = " &
Me.GS_dorigine & ""
Maintenant si tu veux dire est-ce que j'ai créé la requete qui
s'appelle StrSQL avec l'interface graphique, c'est NON...
Par contre, j'ai créé, pour tester, avec l'interface graphique une
requete non dynamique (WHERE Tab1.GS_dorigine ="221") et là, pas de
problème, ça marche (DoCmd.TransferSpreadsheet acExport, 8,
"Nomdemarequete", "D:Baf
Tableau1", True, "")...


Avatar
eric.zzzz
On 20 mar, 10:55, "Gilles MOUGNOZ"
wrote:
Bonjour, Eric
Tel que je vois la chose, l'instruction "DoCmd.TransferSpreadsheet" ne
semble accepter qu'une table ou une requête enregistrée comme paramè tre.
Inspire-toi du code sur le lien suivant pour créer une requête tempora ire,
exécuter ton export et supprimer la requête


Bon, on commence à s'approcher de la solution...
La requete "Requete_Temporaire" a bien été créée dans l'interface de s
requetes, mais le DoCmd ne s'exécute pas et j'ai le
message :"Incompatibilité de type"

Avatar
Gilles MOUGNOZ
Re,
Peux-tu nous récapituler le code que tu utilises ?
Au cas où, dans l'instruction d'export, il faut remplacer "strSQL" par
"Requete_Temporaire"
--
Bonne continuation
-------------------------------------------------------------------------------------------
http://www.mpfa.info : c'est bonheur pour ton ordinateur !
-------------------------------------------------------------------------------------------
eric.zzzz a écrit:
Bonjour, Eric
Tel que je vois la chose, l'instruction "DoCmd.TransferSpreadsheet" ne
semble accepter qu'une table ou une requête enregistrée comme paramètre.
Inspire-toi du code sur le lien suivant pour créer une requête
temporaire,
exécuter ton export et supprimer la requête
Bon, on commence à s'approcher de la solution...

La requete "Requete_Temporaire" a bien été créée dans l'interface des
requetes, mais le DoCmd ne s'exécute pas et j'ai le
message :"Incompatibilité de type"



1 2