OVH Cloud OVH Cloud

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

7 réponses

1 2
Avatar
eric.zzzz
On 20 mar, 15:11, wrote:

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"
J'ai oublié le code :

Dim qd As QueryDef
On Error GoTo Commande81_Click_Err
Set qd = CurrentDb.CreateQueryDef("Requete_Temporaire", "SELECT
Tab1.Niveau FROM Tab1 WHERE Tab1.GS_dorigine = " & Me.GS_dorigine &
"")
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8,
"Requete_Temporaire", "D:BafTableau1.xls"
DoCmd.DeleteObject acQuery, "Requete_Temporaire"
Commande81_Click_Exit:
Exit Sub
Commande81_Click_Err:
MsgBox Error$
Resume Commande81_Click_Exit

Avatar
Gilles MOUGNOZ
Ton code fonctionne bien chez moi (en changeant un peu les noms de table et
de champs).
Quel est le type du champ <GS_dorigine> ? Si c'est du texte il faut entourer
<Me.GS_dorigine> par des apostrophes ('), ce qui donne ceci:
WHERE Tab1.GS_dorigine = '" & Me.GS_dorigine & "'")
Par contre, si c'est un numérique entier, cela devrait fonctionner sans
apostrophes...
--
Bonne continuation
-------------------------------------------------------------------------------------------
http://www.mpfa.info : c'est bonheur pour ton ordinateur !
-------------------------------------------------------------------------------------------
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"
J'ai oublié le code :

Dim qd As QueryDef
On Error GoTo Commande81_Click_Err
Set qd = CurrentDb.CreateQueryDef("Requete_Temporaire", "SELECT
Tab1.Niveau FROM Tab1 WHERE Tab1.GS_dorigine = " & Me.GS_dorigine &
"")
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8,
"Requete_Temporaire", "D:BafTableau1.xls"
DoCmd.DeleteObject acQuery, "Requete_Temporaire"
Commande81_Click_Exit:
Exit Sub
Commande81_Click_Err:
MsgBox Error$
Resume Commande81_Click_Exit



Avatar
eric.zzzz
On 20 mar, 15:21, "Gilles MOUGNOZ"
wrote:
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"
Entretemps j'avais rajouté le code


Avatar
eric.zzzz
On 20 mar, 15:51, "Gilles MOUGNOZ"
wrote:
Ton code fonctionne bien chez moi (en changeant un peu les noms de table e t
de champs).
Quel est le type du champ <GS_dorigine> ? Si c'est du texte il faut entour er
<Me.GS_dorigine> par des apostrophes ('), ce qui donne ceci:
    WHERE Tab1.GS_dorigine = '" & Me.GS_dorigine & "'")
Par contre, si c'est un numérique entier, cela devrait fonctionner sans
apostrophes...


C'est bien du texte; ça ne marche pas ni avec les guillements (") ni
les apostrophes ('); OK, je vais chercher ...

Avatar
Gilles MOUGNOZ
Reprends le code d'origine et ajoutes une apostrophe juste avant le
guillement qui suit le signe = et une autre entre les deux guillemets qui
suivent ta variable. Avec des espaces pour la lisibilité, cela donne:
WHERE Tab1.GS_dorigine = ' " & Me.GS_dorigine & " ' ")
C'est mieux ?
--
Bonne continuation
-------------------------------------------------------------------------------------------
http://www.mpfa.info : c'est bonheur pour ton ordinateur !
-------------------------------------------------------------------------------------------
Ton code fonctionne bien chez moi (en changeant un peu les noms de table
et
de champs).
Quel est le type du champ <GS_dorigine> ? Si c'est du texte il faut
entourer
<Me.GS_dorigine> par des apostrophes ('), ce qui donne ceci:
WHERE Tab1.GS_dorigine = '" & Me.GS_dorigine & "'")
Par contre, si c'est un numérique entier, cela devrait fonctionner sans
apostrophes...
C'est bien du texte; ça ne marche pas ni avec les guillements (") ni

les apostrophes ('); OK, je vais chercher ...



Avatar
eric.zzzz
On 20 mar, 17:09, "Gilles MOUGNOZ"
wrote:
Reprends le code d'origine et ajoutes une apostrophe juste avant le
guillement qui suit le signe = et une autre entre les deux guillemets qu i
suivent ta variable. Avec des espaces pour la lisibilité, cela donne:
    WHERE Tab1.GS_dorigine = ' " & Me.GS_dorigine & " ' ")
C'est mieux ?


Non, tjrs pareil; j'ai le message :"Incompatibilité de type"

Avatar
eric.zzzz
Ouf ! comme ça, ça marche...
WHERE Baf06_4.GS_dorigine =[Formulaires]![Form_IndicGSdorigine]!
[GS_dorigine]
Le Me.GS_dorigine me créait du numérique dans la requete temporaire...
1 2