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 un sous-formulaire vers Excel [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 un sous-formulaire vers Excel
    Bonjour à tous.
    Je n'arrive pas à exporter les champs d'un sous-formulaire.
    (Ce sous-formulaire s'affiche dans un formulaire)
    Sur le formulaire j'ai créé un bouton qui appelle le module suivant :

    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
    Function exportexcel()
     
    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 & "\Monclasseur.xls")
     
    appexcel.Sheets("Feuil1").Select
     
        Let ligne = 2
        'Exportation des champs du formulaire:
        appexcel.Cells(ligne, 1) = Forms!formulaire.Client.Value
        appexcel.Cells(ligne, 2) = Forms!formulaire.Pays.Value
        appexcel.Cells(ligne, 3) = Forms!formulaire.Ville.Value
        appexcel.Cells(ligne, 4) = Forms!formulaire.Adresse.Value
     
        Let ligne = 3
        'Tentatives d'exportation des champs du sous-formulaire:
        appexcel.Cells(ligne, 2) = Forms![formulaire]![sousformulaire]![type].Value
        appexcel.Cells(ligne, 3) = Forms!formulaire.Form!sousformulaire.type.Value
     
    End Function
    Les champs du formulaire sont correctement exportés.
    Mais j'ai une erreur d'exécution pour les tentatives d'exportation du sous-formulaire:
    Impossible de trouver le champ 'sousformulaire' auquel il est fait référence dans votre expression. (Il s'agit des deux dernières lignes avant le End Function)
    Il reconnait donc mon sousformulaire comme un champ et n'atteint pas le champ désiré.

    J'ai aussi essayé de cette manière:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    appexcel.Cells(ligne, 2) = Forms!sousformulaire.type.Value
    Mais dans ce cas il ne trouve pas le sous-formulaire.

    La méthode d'exportation est un peu brute. Dois-je changer de méthode?
    J'ai lu sur ce forum que le code suivant pouvait m'être utile:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.NomSousForm.Form.Recordset
    Dois-je alors passer par un recordset?
    Merci d'avance!

  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 078
    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 078
    Points : 24 717
    Points
    24 717
    Par défaut
    Bonjour,

    Passer par un recordset est un peu plus rapide. (voir le tuto sur ma page perso : La recherche , 3ème chapitre : Export Excel).

    Pour la syntaxe d'un sous formulaire, ça ne s'invente pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms.NomFormulaire.NomSousformulaire.Form.NomControle.Value
    ça fait également l'objet d'un tuto (toujours sur ma page perso.)

    Bonne lecture.

  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
    Bonjour fab, merci pour ta réponse.

    J'ai tenté d'intégrer ton code se trouvant au chapitre "V. Export excel" de la recherche sur ton site.
    Lorsque je le lance par un bouton, je reçois l'erreur de compilation suivante :
    "Membre de méthode ou de données introuvable"
    Private Sub cmd_Export_Click() est surligné en jaune
    .lst_resultat est surligné en bleu (de la ligne If Me.lst_resultat.ListCount = 1 Then)

    Le code qui pose problème est celui se trouvant sur le formulaire à exporté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub cmd_Export_Click()
        ' ne contient pas d'enregistrement
        If Me.lst_resultat.ListCount = 1 Then
           MsgBox "Pas de données à exporter.", vbOKOnly, "Export EXCEL"
           Exit Sub
        End If
        ' Exporte vers EXCEL
        lf_Export2EXCEL Me.lst_resultat.RowSource
    End Sub
    Voilà où je bloque

    (Je travaille sous Access 2003 et Excel 2003)

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 078
    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 078
    Points : 24 717
    Points
    24 717
    Par défaut
    Bonjour,

    As-tu un controle liste nommé lst_resultat ?

  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
    Non je ne pense pas.
    De quoi s'agit-il?

    Ne puis-je pas tout simplement apporter des modifications à mon code de base pour l'exportation vers excel du sous-formulaire?

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 078
    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 078
    Points : 24 717
    Points
    24 717
    Par défaut
    Je t'ai communiqué dans mon premier message la syntaxe pour acceder à un sous formulaire. J'ai également répondu a tes interrogations concernant les performances des echanges Excel/Access via le recordset avec un exemple (à adapter) de celui-ci.

    Apparement tu n'as pas lu mais juste fait un copier/coller d'un code issu du tuto. Mais est-ce le bon code que tu as copier ?

  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'avais essayé ta syntaxe pour l'accès au sous-formulaire, ca me donnait:
    "Erreur d'exécution 2465 : erreur définie par l'application ou par l'objet."
    avec ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    appexcel.Cells(ligne, 6) = Forms!formulaire.sousformulaire.Form.type.Value
    Rien n'y fait.
    J'ai remplacé NomControle par le nom du champ du sous formulaire que j'essaye d'atteindre. Est-ce bien cela?
    J'avais déjà parcouru ton site auparavant mais je n'ai rien trouvé qui convenait à ce problème.
    Désolé j'ai peu d'expérience en vb.

  8. #8
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 078
    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 078
    Points : 24 717
    Points
    24 717
    Par défaut
    As-tu regardé le tuto sur les appels formulaires sur mon espace perso.

    La syntaxe que je t'ai donnée est à titre d'exemple il est évident qu'il faut la modifier pour l'adapter à ton cas. (nom du controle mais également nom du sous-formulaire et du formulaire).

  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
    A vrai dire je m'y perd un peu sur ton site.
    Peux tu m'indiquer le lien vers la page dont tu me parles?
    Evidemment j'ai adapté les noms de formulaire à mon cas mais j'écris formulaire et sous formulaire pour que ce soit plus clair.
    Qu'appelles-tu nom du contrôle?
    C'est bien le titre du champ, en quelque sorte ? (dans mon cas : type, adresse, ville, pays...?)

    La ligne ci-dessous est elle correcte?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    appexcel.Cells(ligne, 6) = Forms!formulaire.sousformulaire.Form.type.Value

  10. #10
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 078
    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 078
    Points : 24 717
    Points
    24 717
    Par défaut
    C'est juste une liste commentée.
    Voici le lien.
    http://loufab.developpez.com/tutorie...pelformulaire/

    T'inquiète pas pour la clarté et poste moi tes VRAIS lignes de code !

  11. #11
    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
    Voilà mon code (1er message)

    Citation Envoyé par valy_442 Voir le message
    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
    Function exportexcel()
     
    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 & "\Monclasseur.xls")
     
    appexcel.Sheets("Feuil1").Select
     
        Let ligne = 2
        'Exportation des champs du formulaire:
        appexcel.Cells(ligne, 1) = Forms!formulaire.Client.Value
        appexcel.Cells(ligne, 2) = Forms!formulaire.Pays.Value
        appexcel.Cells(ligne, 3) = Forms!formulaire.Ville.Value
        appexcel.Cells(ligne, 4) = Forms!formulaire.Adresse.Value
     
        Let ligne = 3
        'Tentatives d'exportation des champs du sous-formulaire:
        appexcel.Cells(ligne, 2) = Forms![formulaire]![sousformulaire]![type].Value
        appexcel.Cells(ligne, 3) = Forms!formulaire.Form!sousformulaire.type.Value
     
    End Function

    J'ai bien lu ta page mais je ne vois toujours pas comment récupérer le contenu du champ du sous-formulaire

  12. #12
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 078
    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 078
    Points : 24 717
    Points
    24 717
    Par défaut
    Il suffit juste d'appliquer ce qui est dans le tuto. Notamment sur cette ligne qui est fausse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    appexcel.Cells(ligne, 2) = Forms![formulaire]![sousformulaire]![type].Value
    C'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms.nomduform.nomdusousformulaire.Form.nomducontrole.Value
    Rien de complexe il faut juste appliquer la règle.

  13. #13
    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
    Quand je suis ton indication, avec le code(avec les noms de formulaire et de contrôle adaptés):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    appexcel.Cells(ligne, 7) = Forms.nomduform.nomdusousformulaire.Form.nomducontrole.Value
    j'obtient l'erreur : "Erreur d'exécution 2465 : erreur définie par l'application ou par l'objet."

    Et si je met uniquement cela(avec les noms de formulaire et de contrôle adaptés):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms.nomduform.nomdusousformulaire.Form.nomducontrole.Value
    J'ai lerreur d'exécution 438 : Propriété ou méthode non gérée par cet objet

  14. #14
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 078
    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 078
    Points : 24 717
    Points
    24 717
    Par défaut
    met un point d'arrêt et teste tes syntaxes dans la fenetre d'exécution.

    Teste les 2 coté de la syntaxe.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ? appexcel.Cells(ligne, 7)
    puis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ? Forms.nomduform.nomdusousformulaire.Form.nomducontrole.Value
    Et du coté des caractères spéciaux et des mots reservés ?

    Ton controle est un champ ou un vrai controle (zone de texte), il est de quel type ?

  15. #15
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    appexcel.Cells(ligne, 7)
    Cela marche nickel

    C'est cette partie qui pose probleme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms.nomduform.nomdusousformulaire.Form.nomducontrole.Value
    Mon controle est une zone de texte qui affiche du texte ou un chiffre.
    Mon sous formulaire est une requête filtrée qui affiche un enregistrement d'une table en plusieurs champs: Type, nom, etc ...

    En gros j'ai quelques chose de ce genre là pour le sous-formulaire:
    Ville_____________Nom_____________Numéro
    Paris____________Patrick______________41

    J'aimerai récupérer les champs : Paris, Patrick, 41 qui sont des valeurs d'un enregistrement pour les écrire directement dans un fichier excel

  16. #16
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 078
    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 078
    Points : 24 717
    Points
    24 717
    Par défaut
    C'est "type" que tu souhaites récupérer. Si le champ "Type" n'est pas associé à un controle (zone de texte) tu dois utiliser le ! au lieu du .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms.nomduform.nomdusousformulaire.Form!nomducontrole
    Question bête :

    Ton formulaire est chargé au moins ?

  17. #17
    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
    Oui il est chargé ^^ Impossible sinon.
    J'ai essayé ton dernier code en ajoutant .value à la fin et cela ne donne toujours aucun résultat. J'utilise peut-être le mauvais vocabulaire, alors voici une illustration en mode création et en mode formulaire de mon formulaire et du sous-formulaire:

    Mode Création


    Mode formulaire

  18. #18
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 078
    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 078
    Points : 24 717
    Points
    24 717
    Par défaut
    Tu n'aurais pas renommé le controle qui contient le sous-formulaire par hasard ?

  19. #19
    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 renommé le formulaire et le sous-formulaire pour simplifier leur nom et enlever les espaces. Et ça marche très bien pour le formulaire.
    Ou puis-je voir le nom du contrôle qui contient le sous-formulaire?
    C'est quand on fait clic droit sur le sous-form en mode création puis propriété?

  20. #20
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 078
    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 078
    Points : 24 717
    Points
    24 717
    Par défaut
    Entre dans le formulaire en création et clique sur le bord du sous formulaire, dans les propriétés tu devrais voir apparaitre Champ père et champ fils (entre autre).

    Le nom du controle est celui que tu mets dans la syntaxe avant le Form.

    Ps : le formulaire doit être en ouvert en execution pour que la syntaxe fonctionne.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [AC-2007] problème d'export d'un sous formulaire vers excel
    Par mbo2 dans le forum IHM
    Réponses: 3
    Dernier message: 28/04/2013, 02h02
  2. Réponses: 3
    Dernier message: 14/09/2009, 11h56
  3. Réponses: 2
    Dernier message: 16/03/2009, 16h57
  4. Exportation de données d'un formulaire vers Excel
    Par bzhmorgane dans le forum IHM
    Réponses: 2
    Dernier message: 05/06/2007, 11h36
  5. Exporter un sous formulaire sous excel
    Par titou dans le forum Access
    Réponses: 3
    Dernier message: 14/02/2005, 18h01

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