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 :

Exporter le contenu d'une zone de liste vers excel


Sujet :

Access

  1. #1
    Membre à l'essai
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juillet 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut Exporter le contenu d'une zone de liste vers excel
    Bonjour à tous.
    Dans le cadre de mon travail, j'ai suivi le tutoriel de Fabrice Constans sur le moteur de recherche. Celui-ci fonctionne parfaitement (après quelques difficultés à mettre en place l'édition dans un formulaire des résultats).

    Il ne me manque qu'une seule fonctionnalité, qu'il n'a pas encore développé, mais qui m'aiderait bien, c'est à dire l'exportation vers Excel des résultats.

    J'ai bien tenté plusieurs approches, mais qui se soldent par des erreurs.
    J'ai essayé celui-ci :

    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 MaConn = New ADODB.Connection
    MaConn.Provider = "Microsoft.Jet.OLEDB.4.0;"
    MaConn.Open "chemin et nom de ta base"
     
    Dim rstTable As ADODB.RecordSet
    Set rstTable = New ADODB.RecordSet
     
    Dim sel As String
     
     
    sel = "select champ1 champ2 from lst_resultat"
    'ta selection de ta liste
     
    rstTable.Open sel, MaConn, adOpenStatic, adLockOptimistic
     
    Open "fichier.xls" For Output As #1
    Do Until rstTable.EOF
        Print #1, rstTable!champ1+"[UNE TABULTION]"+rstTable!champ2
        rstTable.MoveNext
    Loop
    Close #1
     
     
    set rstTable=nothing
    set maconn=nothing
    Celui-ci me renvoie que la base est verrouillée. Une fois que je fais sauter l'instruction qui bloque, le programme plante au niveau du Select (je n'ai pas remis les champs, mais il y en a un qui comporte des espaces, peut être est-ce qui bloque?).

    J'ai tenté avec les library excel, notamment le code proposé par arkham, mais je ne vois pas comment lui dire de prendre les résultats de ma zone de liste :

    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 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
    Peut être que la solution se trouve sous mes yeux. enfin, si vous pouvez m'éclairer de vos lumières, je vous en saurais reconnaissant.

    D'avance merci
    MD

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 017
    Points : 24 554
    Points
    24 554
    Par défaut
    Bonjour,

    Le tuto est en cours de rédaction (et arrive à sa fin).

    La première solution (open) n'est pas du tout adapté à ce cas puisque les fichiers EXCEL ont une structure plutot lourde. Donc à éviter si tu ne veux pas endommagé ton fichier.

    Pour la seconde solution
    Modifie la ligne de déclaration du RST comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    set oRs = oDb.OpenRecordSet(me.lst_resultat.rowsource)
    Cordialement,

  3. #3
    Membre à l'essai
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juillet 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    Merci, cela fonctionne bien!

    La seule chose, est que malgré les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ' Fermeture des objets Excel
    Set Excelsheet = Nothing
    Set ExcelWb = Nothing
    Set ExcelApp = Nothing
    le processus "excel.exe" est encore ouvert et empêche l'accès au fichier même après avoir fermé access. Je suis obligé de tuer le processus avec le gestionnaire de tâches...

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 040
    Points
    20 040
    Par défaut
    il faut aussi fermer excel..
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ExcelWb.Close false
    ExcelApp.Quit
    ' Fermeture des objets Excel
    Set Excelsheet = Nothing
    Set ExcelWb = Nothing
    Set ExcelApp = Nothing

  5. #5
    Membre à l'essai
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Juillet 2006
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Service public

    Informations forums :
    Inscription : Juillet 2006
    Messages : 32
    Points : 20
    Points
    20
    Par défaut
    Ok, c'est bon. Mais il faut juste enlever le "false" sur cette ligne (le programme plante)
    Merci pour votre prompte aide

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 11/06/2020, 12h44
  2. Exporter le contenu d'une zone de texte vers un doc Word
    Par Serigne-BA dans le forum VBA Word
    Réponses: 18
    Dernier message: 05/09/2013, 02h07
  3. Exporter le contenu d'une zone de liste vers excel
    Par petitjo1 dans le forum VBA Access
    Réponses: 3
    Dernier message: 21/10/2010, 20h58
  4. [AC-2003] Exporter le contenu d'une zone de liste dans un fichier CSV
    Par jeje22 dans le forum VBA Access
    Réponses: 11
    Dernier message: 29/04/2010, 16h27
  5. Effacer le contenu d une zone de liste
    Par nico5151 dans le forum IHM
    Réponses: 23
    Dernier message: 22/06/2005, 15h50

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