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 :

Bouton d'export Excel [AC-2007]


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 35
    Points : 28
    Points
    28
    Par défaut Bouton d'export Excel
    Bonjour,

    dans un formulaire j'affiche dans une ListBox le résultat d'une requête.

    Je souhaite ajouter dans le formulaire un bouton qui en l'actionnant affiche le résultat de la requête dans Excel.


    Quelqu'un aurait-il le code vba permettant de réaliser cette opération? (Le code ouvre Excel et exporte la requête dans une feuille Excel)

    Merci d'avance

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 783
    Points : 43 989
    Points
    43 989
    Par défaut
    Je te donne le code que j'ai déjà implémenté.

    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
     
    Dim xlapp As Object
    Dim xlwb As Object
    Dim xlsh As Object
     
    Set xlapp = CreateObject("Excel.Application")
    Set xlwb = xlapp.Workbooks.Add
    Set xlsh = xlwb.Worksheets(1)
    Set rs = Me.Recordset
     
    xlsh.Range("A1").SELECT
    intCount = 0
    Do Until intCount = rs.Fields.Count
            xlapp.ActiveCell = rs.Fields(intCount).Name
            xlapp.ActiveCell.Offset(0, 1).SELECT
            intCount = intCount + 1
    Loop
     
    rs.MoveFirst
    xlsh.Range("A2").CopyFromRecordset rs
     
    xlsh.Range("1:1").SELECT
    xlapp.Selection.Font.Bold = True
    xlsh.Range("A1").SELECT
    xlapp.Visible = True
    Il est pas entièrement de moi, je l'ai modifié.
    Il te met sur la 1ère ligne les titres des champs ( en gras )

    Moi je récupère le contenu du recordset de mon formulaire.

    C'est pas tout à fait ton besoin mais ça doit être adaptable.

    Il te faut récuperer les éléments de ta listbox avec une boucle, et trouver la fonction plaçant une valeur dans une cellule précise du doc Excel probablement un truc comme xlsh.Range("A2").value ( en reprenant la variable de mon code ).
    La Valeur de "A2", tu la fais varier dans ta boucle

  3. #3
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Bonjour.

    S'il s'agit simplement d'afficher le résultat d'une requête dans un fichier Excel, le plus simple est la méthode DoCmd.TransferSpreadsheet.

    Dans la faq : http://access.developpez.com/faq/?page=Excel#ExpExclReq.

    Puis, pour l'ouvrir :
    dans les déclarations
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" _
        (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, _
        ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
    et le code pour ouvrir le fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShellExecute Me.hwnd, "open", "ici le chemin complet du fichier", "", CurrentProject.Path, 1
    Dans la faq : http://access.developpez.com/faq/?pa...n#shellexecute
    Cordialement
    RL

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 35
    Points : 28
    Points
    28
    Par défaut
    Merci beaucoup à vous deux. Je vais tester ça.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 35
    Points : 28
    Points
    28
    Par défaut Parfait
    Ta proposition fonctionne parfaitement. C'est exactement ce dont j'avais besoin! Du coup, j'ai changé Ma listebox en sous formulaire avec affichage des données en mode Feuille de réponse dynmaique, ce qui est encore mieux.

    MERCI INFINIMENT



    Citation Envoyé par chrtophe Voir le message
    Je te donne le code que j'ai déjà implémenté.

    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
     
    Dim xlapp As Object
    Dim xlwb As Object
    Dim xlsh As Object
     
    Set xlapp = CreateObject("Excel.Application")
    Set xlwb = xlapp.Workbooks.Add
    Set xlsh = xlwb.Worksheets(1)
    Set rs = Me.Recordset
     
    xlsh.Range("A1").SELECT
    intCount = 0
    Do Until intCount = rs.Fields.Count
            xlapp.ActiveCell = rs.Fields(intCount).Name
            xlapp.ActiveCell.Offset(0, 1).SELECT
            intCount = intCount + 1
    Loop
     
    rs.MoveFirst
    xlsh.Range("A2").CopyFromRecordset rs
     
    xlsh.Range("1:1").SELECT
    xlapp.Selection.Font.Bold = True
    xlsh.Range("A1").SELECT
    xlapp.Visible = True
    Il est pas entièrement de moi, je l'ai modifié.
    Il te met sur la 1ère ligne les titres des champs ( en gras )

    Moi je récupère le contenu du recordset de mon formulaire.

    C'est pas tout à fait ton besoin mais ça doit être adaptable.

    Il te faut récuperer les éléments de ta listbox avec une boucle, et trouver la fonction plaçant une valeur dans une cellule précise du doc Excel probablement un truc comme xlsh.Range("A2").value ( en reprenant la variable de mon code ).
    La Valeur de "A2", tu la fais varier dans ta boucle

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

Discussions similaires

  1. [MySQL] Bouton Export Excel
    Par Allegro dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/12/2012, 00h44
  2. [AC-2003] Bouton d'exportation vers Excel
    Par pikameuh dans le forum VBA Access
    Réponses: 1
    Dernier message: 06/06/2011, 16h59
  3. Bouton pour export html vers Excel
    Par artkap dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/10/2010, 11h06
  4. Reporting services 2000 & Boutons Export Excel/Imprimer
    Par ratiarison dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 12/01/2007, 11h52
  5. [CR] export Excel (plusieurs feuilles)
    Par kaiserben dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 21/11/2005, 15h03

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