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

Exporter requêtes Access vers feuilles Excel

2 réponses
Avatar
Jorge
Bonjour à tous,
Je voudrais pouvoir exporter le contenu de 3 requêtes Access dans un fichier
Excel, dont chaque requête serais une feuille différente.
Si j'enchaine 3 fois l'instruction ci dessous cela écrase le fichier excel
par le contenu de la nouvelle requête.

DoCmd.OutputTo acOutputQuery, "MaRequete1", acFormatXLS,
"d:\MonFichierExel.xls", False
DoCmd.OutputTo acOutputQuery, "MaRequete2", acFormatXLS,
"d:\MonFichierExel.xls", False
DoCmd.OutputTo acOutputQuery, "MaRequete3", acFormatXLS,
"d:\MonFichierExel.xls", True

Quelle code faut-il utiliser pour obtenir 3 feuilles dans le même fichier
Excel, si cela est possible bien sur.
Merci d'avance pour vos sugestions !!!

2 réponses

Avatar
michdenis
Bonjour,

Un exemple de code (non testé) que tu copies dans un module
de ta base de données Access. Tu devras adapter un peu comme
le vrai nom des requêtes...selon les besoins de ton application.

Tu dois ajouter la référence suivante à Access si elle n'est pas déjà présente
"Microsoft Activex Data objects 2.8 Library"

'-------------------------------------
Sub VersExcel()

'Déclaration des variables
Dim Cn As New ADODB.Connection
Dim Rst As New ADODB.Recordset
Dim StockedSub As New ADODB.Command
Dim Arr(), Elt As Variant, Sh As Object
Dim Xl As Object, Wk As Object, A As Integer

'Le nom des 3 requêtes :
'Les requêtes doivent exister déjà
Arr = Array("Requête1", "Requête2", "Requête3")

'Crée une instance de l'application Excel
Set Xl = CreateObject("Excel.Application")
Xl.Visible = True 'ce n'est pas obligatoire..."

'Ajoute un nouveau classeur avec seulement une feuille
Set Wk = Workbooks.Add(-4167)

'Ouverture de la connexion à la base de donnée
Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Application.CurrentDb

'une boucle sur tous les requêtes
For Each Elt In Arr
StockedSub.ActiveConnection = cnt
StockedSub.CommandText = Elt
Set Rst = StockedSub.Execute
A = A + 1
With Wk
If A > 1 Then
Set Sh = .Worksheets.Add
Else
Sh = .Worksheets(A)
End If
With Sh
'Copie du recordset vers Excel
.Range("A1").CopyFromRecordset Rst
End With
End With
Next
'Ferme le recordSet
Rst.Close
'Ferme la connexion
Cn.Close
'Enregistrer le classeur
Wk.SaveAs "c:MonNouveauClasseur.xls"
'Ferme le fichier excel
Wk.Close False
'Ferme l'application Excel
Xl.Quit

'Libère la mémoire des objets créés
Set Rst = Nothing: Set Cn = Nothing
Set Sh = Nothing: Set Wk = Nothing: Set Xl = Nothing
End Sub
'-------------------------------------

--
MichD
--------------------------------------------


"Jorge" a écrit dans le message de groupe de discussion :
4ccfc46b$0$32441$
Bonjour à tous,
Je voudrais pouvoir exporter le contenu de 3 requêtes Access dans un fichier
Excel, dont chaque requête serais une feuille différente.
Si j'enchaine 3 fois l'instruction ci dessous cela écrase le fichier excel
par le contenu de la nouvelle requête.

DoCmd.OutputTo acOutputQuery, "MaRequete1", acFormatXLS,
"d:MonFichierExel.xls", False
DoCmd.OutputTo acOutputQuery, "MaRequete2", acFormatXLS,
"d:MonFichierExel.xls", False
DoCmd.OutputTo acOutputQuery, "MaRequete3", acFormatXLS,
"d:MonFichierExel.xls", True

Quelle code faut-il utiliser pour obtenir 3 feuilles dans le même fichier
Excel, si cela est possible bien sur.
Merci d'avance pour vos sugestions !!!
Avatar
FFO
Salut à toi
Je ne sais pas si l'instruction OutputTo permet de gérer des feuilles
Excel

As tu essayé ainsi :

DoCmd.OutputTo acOutputQuery, "MaRequete1", acFormatXLS,
"d:MonFichierExel.xls!Mafeuille1", False
DoCmd.OutputTo acOutputQuery, "MaRequete2", acFormatXLS,
"d:MonFichierExel.xls!Mafeuille2", False
DoCmd.OutputTo acOutputQuery, "MaRequete3", acFormatXLS,
"d:MonFichierExel.xls!Mafeuille3", False



Tu peux essayer l'instruction "TransferSpreadsheet" comme ceci :

DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8 ,
"MaRequete1", "d:MonFichierExel.xlsLS!Mafeuille1"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8 ,
"MaRequete2", "d:MonFichierExel.xlsLS!Mafeuille2"
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel8 ,
"MaRequete3", "d:MonFichierExel.xlsLS!Mafeuille3"

A essayer

Tiens moi informé !!!!!