créer un fichier excel

Le
eric.zzzz
Bonjour,
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

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

Excel s'ouvre, mais je constate qu'aucun (classeur) fichier excel n'a
été généré.
Si qq'un a la solution ?
Merci d'avance
Eric
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
3stone
Le #6359191
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)
eric.zzzz
Le #6359111
On 18 mar, 23:58, "3stone"
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'..."

Gilles MOUGNOZ
Le #6359101
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'..."


eric.zzzz
Le #6359091
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

Fabien
Le #6359011
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 ?
@+


eric.zzzz
Le #6358981
On 20 mar, 08:15, Fabien
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, "")...

Fabien
Le #6358951
On 20 mar, 08:15, Fabien
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="......."
@+


Gilles MOUGNOZ
Le #6358941
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, "")...


eric.zzzz
Le #6358901
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"

Gilles MOUGNOZ
Le #6358891
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"



Publicité
Poster une réponse
Anonyme