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

IHM Discussion :

Exporter plusieurs enregistrements d'un sous-formulaire [AC-2003]


Sujet :

IHM

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Points : 11
    Points
    11
    Par défaut Exporter plusieurs enregistrements d'un sous-formulaire
    Bonjour à tous.
    J'ai un formulaire et un sous-formulaire.
    Je souhaite envoyer des enregistrements de mon sous-formulaire vers des cellules d'une feuille excel.
    Voici un exemple:


    Je souhaite exporter les noms Luc et Pierre. Malheureusement mon code VB n'exporte que le 1er enregistrement(Luc) du sous formulaire et néglige les autres.
    J'utilise le code suivant (merci loufab):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function exportexcelvb()
     
    Dim appexcel As Excel.Application
    Dim wbexcel As Excel.Workbook
    Set appexcel = CreateObject("Excel.Application")
    appexcel.Visible = True
    Set wbexcel = appexcel.Workbooks.Open(CurrentProject.Path & "\feuille1")
    appexcel.Sheets("Cover").Select
     
    'Exportation du champ nom
    appexcel.Cells(2, 2) = Forms.repertoire.[Clients].Form.Nom
    Comment faire?
    Merci d'avance

  2. #2
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 902
    Points : 4 796
    Points
    4 796
    Par défaut
    Bonjour
    pour exporter sous Excel tout le recordset du ss-form

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    'Exportation du recordset
     
    appexcel.Cells(2, 2).CopyFromRecordset  Forms.repertoire.[Clients].Form.recordsetClone

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    Salut micniv.
    Merci pour ta réponse, ça fonctionne très bien.

    Maintenant est-il possible:
    • d'exporter seulement certaines valeurs? Et non pas tout le recordset.
    • de pouvoir ensuite choisir une cellule précise pour chaque valeur?

    Merci pour ton aide

  4. #4
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 902
    Points : 4 796
    Points
    4 796
    Par défaut
    Bonjour,
    Pour trouver des réponses, n'hésite pas à consulter la FAQ http://access.developpez.com/faq/?page=Automation

    => Comment envoyer des données Access sur Excel ?

    ou les tutos comme http://cafeine.developpez.com/access/tutoriel/excel/

    Bonne suite

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    Merci pour les liens micniv. Je les ai parcourus
    J'arrive à choisir quelle colonne du sous-formulaire je souhaite exporter.
    Mais toujours le même problème : il n'exporte que le 1er enregistrement du recordset.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    appexcel.Cells(2, 2) = Forms.repertoire.[Clients].Form.Recordset!nom
    Et comment se fait-il que la formule que tu m'as indiquée ne fonctionne qu'une fois?
    Lorsque je lance une 2e fois l'exportation, plus rien n'est exporté pour l'exportation de tout le recordset.
    Et pour l'exportation d'un seule colonne du sous-formulaire (cf code ci-dessus) il me dit: Aucun enregistrement.
    Je dois fermer la base et la réouvrir pour que l'exportation se fasse à nouveau
    Merci pour ton aide

  6. #6
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 902
    Points : 4 796
    Points
    4 796
    Par défaut
    Ben, comme tu peux l'étudier dans le tuto de Cafeine (2eme lien ci-dessus),
    si tu veux alimenter différentes cellules de la feuille XLS, il te faut faire une boucle telle que :
    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
     
    ...
      I = 3
        Do While Not rec.EOF
            For J = 0 To rec.Fields.Count - 1
                ' .Fields(Index).Type renvoie le type du champ
                '   si c'est un Texte (dbText) nous insérons "'" pour
                '   qu'il soit reconnu par Excel comme du Texte
                If rec.Fields(J).Type = dbText Then
                    xlSheet.Cells(I, J + 1) = "'" & rec.Fields(J)
                Else
                    xlSheet.Cells(I, J + 1) = rec.Fields(J)
                End If
            Next J
            I = I + 1
            rec.MoveNext
        Loop
    ...

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    J'ai pu voir ce code.
    Il créé un recordset à partir d'une table.
    Du coup quand on lui demande d'exporter une colonne, il exporte tous les enregistrements de la table.
    Or je souhaiterais exporter uniquement les enregistrements qui apparaissent dans mon sous-formulaire.

  8. #8
    Expert confirmé

    Homme Profil pro
    consultant développeur
    Inscrit en
    Mai 2005
    Messages
    2 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : consultant développeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 902
    Points : 4 796
    Points
    4 796
    Par défaut
    Il faut bien sûr l'adapter :
    as tu initialisé le recordset auparavant comme :
    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
     
    ...
    dim rec as DAO.recordset
     
    SET rec = Forms.repertoire.[Clients].Form.recordsetClone
     
     I = 3
        Do While Not rec.EOF
            For J = 0 To rec.Fields.Count - 1
                ' .Fields(Index).Type renvoie le type du champ
                '   si c'est un Texte (dbText) nous insérons "'" pour
                '   qu'il soit reconnu par Excel comme du Texte
                If rec.Fields(J).Type = dbText Then
                    xlSheet.Cells(I, J + 1) = "'" & rec.Fields(J)
                Else
                    xlSheet.Cells(I, J + 1) = rec.Fields(J)
                End If
            Next J
            I = I + 1
            rec.MoveNext
        Loop
    ...

  9. #9
    Membre à l'essai
    Inscrit en
    Octobre 2010
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 31
    Points : 11
    Points
    11
    Par défaut
    Ce code ne m'exporte toujours pas tous mes enregistrements. Je n'ai peut être pas réussi à l'adapter correctement, mais je ne pense pas que ce code me permette de choisir d'exporter par exemple le nom d'une personne dans la cellule B2, la date dans la cellule C4 etc...

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

Discussions similaires

  1. [AC-2007] Test sur plusieurs enregistrements d'un sous-formulaire
    Par Crachover dans le forum IHM
    Réponses: 4
    Dernier message: 18/01/2010, 16h38
  2. Réponses: 1
    Dernier message: 19/11/2007, 17h18
  3. compter le nombre d'enregistrements d'un sous formulaire
    Par Alexandre Sahli dans le forum Access
    Réponses: 5
    Dernier message: 02/02/2006, 15h47
  4. Limiter nombre d'enregistrement d'un sous-formulaire
    Par snoopy69 dans le forum Access
    Réponses: 12
    Dernier message: 26/10/2005, 17h03
  5. Réponses: 4
    Dernier message: 16/09/2005, 15h56

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