IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Export de données vers Excel [AC-2007]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 311
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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éé.

  2. #2
    Invité
    Invité(e)
    Par défaut
    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

  3. #3
    Membre éclairé Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 311
    Par défaut
    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

  4. #4
    Membre éclairé Avatar de Marcopololo
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    311
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 311
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. exporter des données vers Excel
    Par vautour29 dans le forum Access
    Réponses: 10
    Dernier message: 12/12/2006, 17h15
  2. export de données vers excel.
    Par songue77 dans le forum Bases de données
    Réponses: 10
    Dernier message: 21/07/2006, 09h41
  3. [En cours]Exporter des données vers Excel
    Par Muhad'hib dans le forum Contribuez
    Réponses: 2
    Dernier message: 12/01/2006, 14h25
  4. exporter des données vers EXCEL!
    Par JauB dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 25/11/2005, 15h13
  5. Export de données vers Excel
    Par psykot63 dans le forum Access
    Réponses: 2
    Dernier message: 03/01/2005, 12h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo