Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 26/11/2011, 16h10   #1
Nouveau Membre du Club
 
Avatar de Marcopololo
 
Inscription : juillet 2008
Messages : 166
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 166
Points : 34
Points : 34
Par défaut Export de données vers Excel

Bonjour,

Je souhaite exporter des données de deux tables Access vers Excel.
J'ai utilisé le code ci dessous. Mais cela ne fonctionne que pour la première partie. Est il possible de créer un onglet dans un fichier Excel existant ?

Mon code fonctionne bien comme cela mais si je rajoute une seconde partie pour exporter une seconde table dans le même fichier, j'ai une erreur.

Second problème, la commande autofit pour l'ajustement des cellules ne fonctionne pas

Code :
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
Private Sub Export_Excel_Click()
 
    Dim xlWbk As Excel.Workbook, xlSheet As Excel.Worksheet
    Dim strXLFile As String, strFeuille1 As String, strFeuille2 As String
    Dim strRequeteinfoclient As String
    Dim strRequeteliste1 As String, strRequeteliste2 As String
 
 
                ' Nom de la table ou de la requête
                strRequeteliste1 = "Requête Export Liste Extincteurs Excel"
                strRequeteliste2 = "Export excel coordonnées client"
                ' Nom completdu fichier excel
                strXLFile = "d:\bases extincteurs\Access 2007\rapport.xls"
                ' Nom de la feuille excel
                strFeuille1 = "Liste"
                strFeuille2 = "coordonnées"
 
                    'Supprimer fichier avant export
                    If Dir(strXLFile) <> "" Then Kill strXLFile
                    'Ajouter une feuille de calcul nommée Coordonnées
                            'xlSheet.Name = strFeuille2
                            'Set xlSheet = xlWbk.Worksheets.Add
                            'xlSheet.Name = strFeuille2
 
                 DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, strRequeteliste1, _
                    strXLFile, True, strFeuille1
                        ' Ouvre classeur
                        Set xlWbk = GetObject(strXLFile)
                        ' référence la feuille
                        Set xlSheet = xlWbk.Worksheets(strFeuille1)
                        xlSheet.Columns.AutoFit ' ajustement automatique largeur colonnes
 
 
      End Sub
Second code qui ne fonctionne pas. Renvoie une erreur

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
'Ajouter une feuille de calcul nommée Coordonnées
                            Set xlSheet = xlWbk.Worksheets.Add
                            xlSheet.Name = strFeuille2
 
                ' Nom de la table ou de la requête
               'strRequeteliste1 = "Export excel coordonnées client"
                ' Nom completdu fichier excel
                strXLFile = "d:\bases extincteurs\Access 2007\rapport.xls"
                ' Nom de la feuille excel
                strFeuille2 = "Coordonnées"
 
                DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, strRequeteliste2, _
                    'strXLFile, True, strFeuille2
 
                        ' Ouvre classeur
                        Set xlWbk = GetObject(strXLFile)
                        ' référence la feuille
                        Set xlSheet = xlWbk.Worksheets(strFeuille2)
                        xlSheet.Columns.AutoFit ' ajustement automatique largeur colonnes
Merci d'avance de votre aide

Marcopololo

P.S. Si je désactive une partie du code ou l'autre cela fonctionne mais je n'ai qu'un onglet de créé.
Marcopololo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/11/2011, 16h26   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 625
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 625
Points : 30 962
Points : 30 962
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Cette méthode n'est pas l'idéal. lorsque l'on veut intervenir sur le fichier Excel.

La meilleure méthode est la pilotage d'Excel, comme les explications de ce tuto : http://cafeine.developpez.com/access/tutoriel/excel/#LV

La FAQ comporte de nombreux exemples : http://access.developpez.com/faq/ind...chercher=excel

De plus comme tu veux exporter une requête tu peux utiliser la méthode CopyFromRecordset de l'objet Range d'Excel comme ici :http://access.developpez.com/sources...tRapportsExcel

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 26/11/2011, 20h16   #3
Nouveau Membre du Club
 
Avatar de Marcopololo
 
Inscription : juillet 2008
Messages : 166
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 166
Points : 34
Points : 34
Merci je m'oriente vers cette solution et je posterai le code quand il sera fonctionnel, cela pourra peut être être utile à quelqu'un.

Marcopololo
Marcopololo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/11/2011, 09h14   #4
Nouveau Membre du Club
 
Avatar de Marcopololo
 
Inscription : juillet 2008
Messages : 166
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 166
Points : 34
Points : 34
Voici le code utilisé pour créer des onglets. Ensuite il suffit d'y injecter les données avec la méthode proposée par Philippe.

Encore merci

Marcopololo

Code :
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
Dim xlApp As Excel.Application
Dim xlSheet1 As Excel.Worksheet, xlSheet2 As Excel.Worksheet
Dim xlBook As Excel.Workbook
Dim strXLFile As String
Dim rec As Recordset
 
    Set rec = CurrentDb.OpenRecordset("Nom requete", dbOpenSnapshot)
 
Set Db = CurrentDb
Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
 
 
' Nom completdu fichier excel
 
                strXLFile = "d:\bases extincteurs\Access 2007\essaiexport.xls"
'Supprimer fichier avant export
                    If Dir(strXLFile) <> "" Then Kill strXLFile
 
 
 
Set xlBook = xlApp.Workbooks.Add
 
Set xlSheet1 = xlBook.Worksheets.Add
xlSheet1.Name = "Liste"
 
Set xlSheet2 = xlBook.Worksheets.Add
xlSheet2.Name = "Coordonnées"
xlBook.SaveAs strXLFile      'sauvegarde fichier
xlApp.Quit
Marcopololo est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h39.


 
 
 
 
Partenaires

Hébergement Web