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 :

extraction Access vers Excel


Sujet :

VBA Access

  1. #1
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 77
    Points : 58
    Points
    58
    Par défaut extraction Access vers Excel
    Bonjour,

    J'ai des résultats de recherche dans 4 zones de listes différentes (avec des requetes SELECT dans la propriété Contenu).

    je voudrais extraire ces résultats dans un même fichier excel mais dans 4 onglets différents.

    Comment faire ?

    merci

  2. #2
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Salut,

    Je te suggère la lecture du tutoriel de Cafeine sur l'export vers Excel. Notamment le point 4.


  3. #3
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 77
    Points : 58
    Points
    58
    Par défaut
    La fonction TransferSpreadsheet sert à exporter des tables entières. moi les résultats dans mes zones de texte sont des requêtes du type SELECT champs FROM table WHERE condition ORDER BY nom.
    est-ce que c'est possible d'extraire directement les résultats de cette requête (qui n'a pas de nom mais est défini dans le contenu de la zone de liste) avec transferspreadsheet ?

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Développeur VBA/C#/VB.Net/Power Platform
    Inscrit en
    Juillet 2007
    Messages
    14 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur VBA/C#/VB.Net/Power Platform
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 598
    Points : 34 286
    Points
    34 286
    Par défaut
    oui, en passant par une table temporaire remplie avec la requete select par exemple
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    235
    Détails du profil
    Informations personnelles :
    Localisation : Luxembourg

    Informations forums :
    Inscription : Juillet 2006
    Messages : 235
    Points : 176
    Points
    176
    Par défaut
    Ou par un recordset basé sur ta requete.

    Voici un exemple:

    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
     
     
        Set Appexcel = CreateObject("Excel.Application")
        Appexcel.Visible = True
        Set Wbexcel = Appexcel.Workbooks.Open("C:\Detailled Report.xls")
        Appexcel.Sheets("Global").Select
     
    'creation du recordset à partir de la requete
        Dim rsReport As DAO.Recordset
        Set rsReport = CurrentDb.OpenRecordset("nomrequete")
        boucleReport = 1
     
    'parcourt le recordset puis afficher les données du recordset dans les cellules du fichier excel
        While Not rsReport.EOF
            Appexcel.Cells(boucleReport + 7, 1) = rsReport(0)
            Appexcel.Cells(boucleReport + 7, 2) = rsReport(1)
            Appexcel.Cells(boucleReport + 7, 3) = rsReport(2)
            Appexcel.Cells(boucleReport + 7, 4) = rsReport(3)
            Appexcel.Cells(boucleReport + 7, 5) = rsReport(4)
            Appexcel.Cells(boucleReport + 7, 6) = rsReport(5)
            boucleReport = boucleReport + 1
        rsReport.MoveNext
        Wend
     
    Set rsReport = Nothing

  6. #6
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Je me suis trompé.. c'est pas le point 4 mais le 5.
    Il te permettra de mettre en form ton fichier Excel.

    oui, en passant par une table temporaire remplie avec la requete select par exemple
    Je suis à moitié d'accord.
    Ceci fonctionne très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, Me.MaZoneDeListe.RowSource, "MonfichierExcel.xls"
    En plus,
    Si tu ajoutes à la suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, Me.MaZOneDeListe2.RowSource, "MonfichierExcel.xls"
    L'exportation se fait dans le même fichier mais dans une feuille différente.


  7. #7
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 77
    Points : 58
    Points
    58
    Par défaut
    jpcheck :
    par exemple avec une requête Création de table ? CREATE TEMPORARY TABLE table (champ1,champ2)

    Lou Pitchoun :
    J'ai fait comme tu as dit mais j'ai un message d'erreur :
    le nom de table n'est pas conforme au regle d'appelation d'objet quand j'écris :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel97, Me.ExpedMarchandise.RowSource, "MonfichierExcel.xls"

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour

    1 - Est-ce que ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Me.ExpedMarchandise.RowSource
    Cela représente bien le nom de ta table ?

    2 - Quelle version d'Excel as-tu ? Car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    acSpreadsheetTypeExcel97
    risque de te donner une erreur.
    Regarde l'aide en fonction de ta version.


    Starec

  9. #9
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 77
    Points : 58
    Points
    58
    Par défaut
    Me.ExpedMarchandise.RowSource représente bien ma table. j'ai les résultats qui s'affiche dans une zone de liste. et quand je met debug.print Me.ExpedMarchandise.Rowsource, j'obtiens biens la formule SQL.

    j'ai excel 2003. j'utilise AcSpreadSheetTypeExcel9 mais ça ne marche pas.

    Est-ce que l'erreur peut venir de Me.ExpedMarchandise.Rowsource qui est une requete et non pas une table ? le message étant : "le nom de table n'est pas conforme au regle d'appelation d'objet ", ça signifie qu'il cherche une table dans les paramètres, non ?

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour

    La méhode TransfertSpreadSheet n'interprètera pas le SQL, il faut le nom d'une table ou d'une requête, et pas le code SQL.

    Il faut que tu crées une requête avec ton SQL, et c'est elle que tu devras mettre en paramètre.

    Starec

  11. #11
    Expert éminent
    Avatar de Lou Pitchoun
    Profil pro
    Inscrit en
    Février 2005
    Messages
    5 038
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Février 2005
    Messages : 5 038
    Points : 8 268
    Points
    8 268
    Par défaut
    Citation Envoyé par zanou666 Voir le message
    Me.ExpedMarchandise.RowSource représente bien ma table. j'ai les résultats qui s'affiche dans une zone de liste. et quand je met debug.print Me.ExpedMarchandise.Rowsource, j'obtiens biens la formule SQL.

    j'ai excel 2003. j'utilise AcSpreadSheetTypeExcel9 mais ça ne marche pas.

    Est-ce que l'erreur peut venir de Me.ExpedMarchandise.Rowsource qui est une requete et non pas une table ? le message étant : "le nom de table n'est pas conforme au regle d'appelation d'objet ", ça signifie qu'il cherche une table dans les paramètres, non ?
    Alors un petit historique sur les numéros :
    8 : Access97 (Office97) et accéssoirement 97 qui fonctionne mieux que 8 sur AcSpreadSheetTypeExcel
    9 : Access2000 (Office2000)
    10 : Access2002/XP (Office2002/XP)
    11 : Access2003 (Office2003)
    12 : Access2007 (Office2007)

    Comme le dit Starec : un p'tit coup de F1

  12. #12
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 77
    Points : 58
    Points
    58
    Par défaut
    avec un code comme ça, ça ne marche pas non plus :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim Requete As String
     
    Requete = Me.ExterneSE.RowSource
     
    DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, Requete, "MonfichierExcel.xls"

  13. #13
    Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    77
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 77
    Points : 58
    Points
    58
    Par défaut
    j'ai cherché l'aide pour acSpreadsheetTypeExcel mais dans mon aide, ça s'arrête à 9. du coup, je l'avais pas trouvé.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Non

    Dans Requete tu auras une chaine SQL, c'est une requête dans la fenêtre requête de la base de donnée.

    Starec

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

Discussions similaires

  1. Extraction de donnée par ADO ACCESS vers Excel
    Par roidurif dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/05/2009, 18h29
  2. [AC-2000] Extraction hebdomadaire d'Access vers Excel..
    Par amne26 dans le forum VBA Access
    Réponses: 2
    Dernier message: 07/05/2009, 11h56
  3. Liaison Office Access vers Excel
    Par PDR dans le forum Access
    Réponses: 4
    Dernier message: 04/10/2005, 10h20
  4. Extraction base vers excel
    Par georgeabitbol dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 15/07/2004, 09h40
  5. Access vers excel
    Par tiopan dans le forum Access
    Réponses: 6
    Dernier message: 05/12/2003, 08h43

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