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 vers Excel les colonnes visibles d'un formulaires


Sujet :

IHM

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 187
    Points : 75
    Points
    75
    Par défaut Exporter vers Excel les colonnes visibles d'un formulaires
    Bonjour,

    J'ai un formulaire ACCESS avec plusieurs colonnes dont je peux masquer certains et rendre d'autres visible.
    J'aimerai exporter ce formulaire vers excel.
    Y-a-t'il un moyen avec VBA ACCESS d' exporter vers EXcEL seulement les colonnes visibles de mon formulaire?.

    Merci pour votre aide

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

    Via VBA il faut créer une requête basée sur la table source du formulaire et balayer les colonnes une à une pour repérer celles qui sont visibles, il n'y a plus qu'à rajouter le nom de la colonne dans la partie SELECT.
    Une fois la requête composée on la sauve en tant que query pour la jouer avec l'instruction TransfertSpreadSheet classique.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 187
    Points : 75
    Points
    75
    Par défaut
    merci pour la réponse mais c est pas aussi évident parceque je ne sais pas au préalable quelle colonne l'utilisateur rend visible ou pas.
    1- à l'ouverture du formulaire(feuilles de données) tous les colonnes sont visibles.
    2- L'utilisateur rend visible les colonnes dont il a besoin.
    3-il enregistre ce formulaire sous un autre nom
    4-il exporte vers excel seulement les colonnes visibles du nouveau formulaire. c'est ici qu'il ya probleme parceque toutes les colonnes(memes ceux qui ne sont pas visibles) sont exportées vers excel.

  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 004
    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 004
    Points : 24 593
    Points
    24 593
    Par défaut
    Si c'est justement très évident, au moment ou tu vas déclencher la procédure les colonnes sont déjà marquées visible/cachée et c'est cette procédure qui va prendre les colonnes visibles et écarter les non visibles.

    Y a plus qu'à !
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  5. #5
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 187
    Points : 75
    Points
    75
    Par défaut
    Merci mais tu peux me faire un exemple parceque je ne comprend pas très bien ton explication. Je ne sais pas comme dire à la requête de ne choisir que les colonnes visibles. J ai essayé ceci Properties("ColumnHidden") = -1 ca ne marche pas.
    Sinon voici ce qu j'ai essayé de faire biensûr ca ne marche pas. Est ce que tu peux completer ma requete?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    sSQL = "SELECT * FROM " & Me.RecordSource
        If Me!FilterOn Then
            sSQL = sSQL & " WHERE " & Me!Filter
        End If


    Merci d'avance

  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 004
    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 004
    Points : 24 593
    Points
    24 593
    Par défaut
    Il faut faire une boucle autour de la première ligne pour insérer les noms de la source des colonnes si elles correspondent.
    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
     
    sSQL = "SELECT "
    for each ctr...
       if not ctr.columnhidden then
           sSQL = sSQL &  ctr.controlsource & " ,"
       endif
    next
     
     sSQL = left(sSQL,len(sSql)-1)
     
     sSQL = sSQL &  FROM " & Me.RecordSource
     
        If Me!FilterOn Then
            sSQL = sSQL & " WHERE " & Me!Filter
        End If
    cet exemple n'est pas finalisé mais c'est à peut près ce que tu dois faire.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  7. #7
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 187
    Points : 75
    Points
    75
    Par défaut
    voici ce que j'ai fait

    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
    sSql = "SELECT "
    For Each ctr In Me.Controls
    If Not ctr!ColumnHidden Then
          sSql = sSql & ctr!ControlSource & " ,"
       End If
    Next
     
     sSql = Left(sSql, Len(sSql) - 1)
    
     sSql = "SELECT * FROM " & Me.RecordSource
     If Me.FilterOn Then
    
          sSql = sSql & " WHERE " & Me.Filter
            End If

    ça me renvoie l'erreur suivante "erreur d'exécution 438 : propriété ou méthode non gérée par cet objet".

    voici la partie concernée par l'erreur ]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      If Not ctr!ColumnHidden Then
    Merci d'avance

  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 004
    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 004
    Points : 24 593
    Points
    24 593
    Par défaut
    ctr doit être déclaré, il s'agit d'un type Control

    pourquoi tu mets un "!" au lieu d'un "." ?

    Lorsque tu n'auras plus d'erreur mets un point d'arrêt pour suivre ce qui se passe et comprendre pourquoi cela ne fonctionne pas. Il vaut mieux toujours être autonome que copiste dans ce métier.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  9. #9
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 187
    Points : 75
    Points
    75
    Par défaut
    Bonjour,

    j'ai déclaré ctr, mais toujours rien.

    j'ai mis un "!" au lieu d'un "." parce que "." me renvoyais une erreur.


    Merci

  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 004
    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 004
    Points : 24 593
    Points
    24 593
    Par défaut
    Admettons un formulaire en mode feuille de données composé des zone de texte et des étiquettes associées.
    Voici le code à créer dans un module standard ou un autre formulaire pour obtenir un début de chaine sql valide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim ctr As Control
    Dim frm As Form
    Dim ssql As String
    Set frm = Forms.Nom_form_feuillededonnées
     
    ssql = "SELECT "
    For Each ctr In frm.Controls
       If TypeOf ctr Is TextBox Then
       If Not ctr.ColumnHidden Then
          ssql = ssql & ctr.ControlSource & " ,"
       End If
       End If
    Next
    Debug.Print ssql
    Le typeof évite de prendre les étiquettes mais ne retient que les zones de texte

    A toi d'adapter et de compléter pour former une chaine sql valide.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  11. #11
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 187
    Points : 75
    Points
    75
    Par défaut
    Bonjour,

    J'ai malheuresement une erreur 3075 à cet endroit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ssql = ssql & ctr.ControlSource & " ,"
    Le message complet est :
    Erreur de syntaxe (opérateur absent) dans l'expression "Nom_du_champs"
    j'ai pensé qu'il fallait mettre les crochets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ssql = ssql & Chr(91) & ctr.ControlSource & Chr(93) & " , "

    mais rien à faire ça ne veux pas tout simplement marcher
    Merci d'avance pour votre aide

  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 004
    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 004
    Points : 24 593
    Points
    24 593
    Par défaut
    Pourquoi utiliser des chr() pour des caractères non étendu ? Pour améliorer l'illisibilité du code ?

    Si l'erreur se produit sur cette ligne ce n'est pas un problème de crochet, dans ce cas le problème se produirait lors de la lecture du script SQL, le code n'en est pas encore là.

    Que contient ControlSource lorsque tu l'interroge ?
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  13. #13
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 187
    Points : 75
    Points
    75
    Par défaut
    ça me donne seulement les colonnes visibles du formulaire.

  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 004
    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 004
    Points : 24 593
    Points
    24 593
    Par défaut
    C'est donc que ça fonctionne.
    il y a quelque chose que tu ne nous dis pas.

    Ce code fonctionne parfaitement normalement.

    Peux-tu poster ton appli ?
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  15. #15
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 187
    Points : 75
    Points
    75
    Par défaut
    bonjour,
    ci-Joint l'appli

    Merci
    Fichiers attachés Fichiers attachés

  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 004
    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 004
    Points : 24 593
    Points
    24 593
    Par défaut
    Bonjour,
    Je suis perplexe... L'erreur ne se produit pas sur la ligne indiquée mais sur l'ouverture du recordset.

    Ce qui est normal puisque ton script SQL est incomplet. Voici de quoi le compléter.

    http://access.developpez.com/sql/

    http://office.microsoft.com/fr-fr/ac...010256402.aspx

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  17. #17
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 187
    Points : 75
    Points
    75
    Par défaut
    Tu as raison j'avais oublié de donner la source
    J'ai corrigé ma requête mais je reçois toujours la même erreur.

    Erreur d'exécution 438 # :
    Objet ne gère pas cette propriété ou cette méthode
    voici le code corrigé ci-dessous.
    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
     
    Set frm = Forms.Liste_des_produits
     db = CurrentDb
    ssql = "SELECT "
    For Each ctr In frm.Controls
       If TypeOf ctr Is TextBox Then
       If Not ctr.ColumnHidden Then
          ssql = ssql & ctr.ControlSource & ","
           End If
       End If
     
    Next
    ssql = Left(ssql, Len(ssql) - 1)
     
     ssql = ssql & " FROM " & frm.RecordSource
    Debug.Print ssql
     
    Set rs2 = db.OpenRecordset(ssql)
    Merci de ton aide

  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 004
    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 004
    Points : 24 593
    Points
    24 593
    Par défaut
    Quelle ligne ?
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  19. #19
    Membre régulier
    Inscrit en
    Novembre 2007
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 187
    Points : 75
    Points
    75
    Par défaut
    ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rs2 = db.OpenRecordset(ssql)
    Merci

  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 004
    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 004
    Points : 24 593
    Points
    24 593
    Par défaut
    Vérifie le type d'objet rs2.
    Vérifie le contenu de ssql lorsque cette ligne est exécutée.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

Discussions similaires

  1. Export vers Excel avec les noms des colonnes
    Par JauB dans le forum AS/400
    Réponses: 7
    Dernier message: 04/02/2011, 09h18
  2. Export vers excel d'un nombre prédéfini de colonne
    Par Celia003 dans le forum SharePoint
    Réponses: 3
    Dernier message: 09/07/2010, 15h24
  3. [SP-2007] Habilitation sur les listes exportées vers Excel
    Par cpdump dans le forum SharePoint
    Réponses: 2
    Dernier message: 02/02/2010, 12h33
  4. Réponses: 5
    Dernier message: 30/09/2009, 19h51
  5. Réponses: 5
    Dernier message: 10/07/2009, 10h21

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