Salut,
Souhaites-tu faire cet export régulièrement,
Si oui je te conseille de créer avant tout ton fichier Excel, puis,
pour modifier ou améliorer ton code tu as la faq:
DataAccessExcel
tu peux aussi copier l'entièreté de tes données dans ta feuille Excel sans utilisé de boucle;
En utilisant l'instruction suivante, qui copie le contenu de ta table dans ta feuille (ici feuil1):
appexcel.Sheets("Feuil1").Range("A2").CopyFromRecordset TableClient
Dans ce cas ton code ressemblera à ça:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
Public Function Exporter()
Dim appexcel As Excel.Application
Dim wbexcel As Excel.Workbook
Dim Db As DAO.Database
Dim TableClient As DAO.Recordset
Dim strSQL As String
Set appexcel = CreateObject("Excel.Application")
' appexcel.Visible = True
' ouverture de ton classeur Excel : ici il s'agit du classeur1.xls
' situé dans le répertoire c:\Excel
Set wbexcel = appexcel.Workbooks.Open("c:\Excel\Classeur1.xls")
Set Db = CurrentDb
' Copie du contenu de ta table dans un recordSet
Set TableClient = Db.OpenRecordset("Internal", DAO.dbOpenSnapshot)
with appexcel.Sheets("Feuil1")
' met à jour les entête de colonnes dans ta feuille Excel.
For iCols = 0 To TableClient.Fields.Count - 1
.Cells(1, iCols + 1).Value = TableClient.Fields(iCols).Name
Next
' Suppression du contenu de la feuille en question avant ajout.
.Range("A2:T10000").Delete
' Copie du contenu du recordSet dans ta feuille : Ici la feuille se nomme Feuil1
.Range("A2").CopyFromRecordset TableClient
end with
' libération des variables et fermeture du classeur.
Db.Close
appexcel.ActiveWorkbook.Save
appexcel.ActiveWorkbook.Close
Set wbexcel = Nothing
appexcel.Quit
Set appexcel = Nothing
End Function |
Note qu'après l'exécution de ce code, ton fichier Excel se ferme après avoir été enregistré: il faut donc le rouvrir pour voir le résultat.
A toi aussi de définir le chemin de ton fichier Excel dans le code:
Set wbexcel = appexcel.Workbooks.Open(chemin)
========================================================
Sinon,
tu as aussi la commande TransferSpreadsheet qui te fait le tout:
DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, "Internal", txtChemin, True
Pour une synthèse, voici un tuto intéressant.
A+
PS: Si tu as une erreur sur CopyFromRecordset alors tu peux peut-être aller voir ce lien
Partager