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

Access Discussion :

Access export vers Excel sur plusieurs feuilles


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut Access export vers Excel sur plusieurs feuilles
    Bonjour

    J'utilise Access 2000 dans le cadre de mon stage en entreprise.

    Je dois créer différents listings par clients. Mais pour certaints clients, ces listings ont plus de 30000 lignes. Donc j'ai pensé couper ces listings en plusieurs listings (plus courts) selon les codes produits.

    L'équipe avec laquelle je travaille a besoin de ces listings sous format excel.

    L'équipe choisi un client dans la liste du formulaire et par clic sur un bouton, le fichier Excel peut être enregistré.

    Est il possible d'executer plusieurs requêtes et de les enregistrer dans différentes feuilles Excel ?

    Par exemple requête_listing_A en Feuil1
    requête_listing_B en Feuil2

    Merci

  2. #2
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    slt,

    en automation OLE ça semble possible
    cf la FAQ pour des exemples d'automation : http://access.developpez.com/faq/?page=Excel

    et avec notammant la méthode CopyFromRecordset à appliquer à un objet Range d'Excel, pour transférer un recordset de Access vers Excel en une instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjExcel.Sheets("MaFeuille).Range("A1").CopyFromRecordset(MonRecordset)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    Il y aura plusieurs utilisateurs, donc je ne peux pas donner un chemin de fichier fixe. Comme modifier ce code pour que l'utisateur puisse choisir où enregistrer le fichier ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set appexcel = CreateObject("Excel.Application") 
    appexcel.Visible = True 
    Set wbexcel = appexcel.Workbooks.Open("Chemin du fichier Excel")

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    Citation Envoyé par Arkham46
    slt,

    et avec notammant la méthode CopyFromRecordset à appliquer à un objet Range d'Excel, pour transférer un recordset de Access vers Excel en une instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ObjExcel.Sheets("MaFeuille).Range("A1").CopyFromRecordset(MonRecordset)
    Je suis débutante et j'ai du mal à utiliser ton code : j'ai l'erreur "objet requis".

    Peux tu me donner plus de précisions ?

  5. #5
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    Slt,

    Pour ouvrir la boîte de dialogue qui demande un nom de fichier tu peux utiliser ça :
    http://access.developpez.com/faq/?pa...AffBoitEnregSs

    Par contre ton code ouvre un fichier existant.
    Il faut utiliser Add au lieu de Open si tu veux créer un nouveau fichier, puis appeler la méthode SaveAs pour le sauvegarder une fois les traitements terminés.

    Pour le CopyFromRecordset il faut déjà créer un recordset dans Access.
    le tuto DAO : http://warin.developpez.com/access/dao/

    Un exemple ici dans la section Automation :
    http://cafeine.developpez.com/access/tutoriel/excel/
    (cet exemple n'utilise pas CopyFromRecordset, c'est plus flexible mais moins rapide car les cellules sont remplies une à une)

    Un exemple avec CopyFromRecordset ici :
    http://www.developpez.net/forums/sho...d.php?t=173529

    Ca fait beaucoup d'info à digérer tout ça...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juin 2006
    Messages : 86
    Points : 48
    Points
    48
    Par défaut
    Effectivement c'est la galère !!! Est il possible de m'envoyer un exemple concret ? Merci d'avance

  7. #7
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 526
    Points
    14 526
    Par défaut
    ben les deux derniers liens c'est des exemples concrêts.

    c'est sûr faut adapter, mais dur dur de trouver un code qui fait ce que tu veux exactement, à moins d'un coup de chance

    de toute façon les recordsets DAO c'est très utile alors ce n'est pas du temps perdu de les comprendre

    commence par un truc simple :
    - création d'un fichier Excel
    - création d'un recordset
    - export du recordset avec CopyFromRecordset
    - Sauvegarde du fichier Excel

    Code écrit à la volée, à tester : 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
    Dim ExcelApp As Excel.Application
    Dim ExcelWb as Excel.WorkBook
    Dim Excelsheet As Excel.WorkSheet
    Dim oDb as DAO.DataBase
    Dim oRs as DAO.Recordset
     
    ' Création Objets Excel
    Set ExcelApp = CreateObject("Excel.application")
    Set ExcelWb = ExcelApp.Workbooks.Add
    Set Excelsheet = ExcelApp.worksheets(1)
    ' Création Objets DAO
    Set oDb = CurrentDb
    set oRs = oDb.OpenRecordSet("Select TesChamps From Table Where LeChamp = 'TonCritère'")
    ' Export du recordset dans Excel
    Excelsheet.Cells(1,1).CopyFromRecordset oRs
    ' Fermeture des objets DAO
    oRs.Close
    Set oRs = Nothing
    Set oDb = Nothing
    ' Sauvegarde du classeur Excel
    ExcelWb.SaveAs "C:\Test.xls"
    ' Fermeture des objets Excel
    Set Excelsheet = Nothing
    Set ExcelWb = Nothing
    Set ExcelApp = Nothing

    Ensuite tu peux ajouter une boucle pour générer autant de recordset et de feuilles que tu veux dans ton fichier Excel.

Discussions similaires

  1. [AC-2003] Création d'une requête et export vers Excel sur une feuille donnée
    Par nola38 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 24/01/2014, 15h23
  2. Réponses: 15
    Dernier message: 15/05/2008, 20h53
  3. Requete en access exporter vers excel
    Par Kalvin_20 dans le forum VBA Access
    Réponses: 3
    Dernier message: 15/05/2008, 13h51
  4. [DDE]Exporter vers Excel dans une feuille spécifique
    Par javelot69 dans le forum Access
    Réponses: 8
    Dernier message: 05/04/2007, 12h36
  5. access Export vers excel
    Par Renardo dans le forum Access
    Réponses: 4
    Dernier message: 22/09/2006, 12h03

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