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

Macros et VBA Excel Discussion :

Insérer un tableau excel dans un UserForm [XL-2016]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2016
    Messages : 26
    Par défaut Insérer un tableau excel dans un UserForm
    Bonjour,
    Je ne trouve pas de solution simple et fiable pour insérer un tableau de plusieurs lignes et colonnes dans un Userform crée dans EXCEL 2016
    L'idée est en faite d'avoir une présentation "utilisateur" d'un tableau en consultation.
    Je suis ouvert sur vos propositions ou remarques car tous les tutos sur ce sujet ne me donne pas satisfaction.
    Certains parlent de Spreadsheet. Je n'ai pas compris si cela fonctionne sous 2016.
    Je ne suis pas un pro dans le développement sous Excel. Merci de me faire des réponses complétes afin que je m'y retrouve. Au pire des cas, un fichier exel en exemple est bien venu.
    MERCI

  2. #2
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Bonjour à toi,

    Qu'as tu essayé exactement ?

    Par exemple, est-ce que le remplissage d'une ListBox avec les valeur de la plage désirée répondrait à ton besoin ?

  3. #3
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    Salut,

    tu peux essayer ça.
    Fichiers attachés Fichiers attachés

  4. #4
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2016
    Messages : 26
    Par défaut
    Je ne souhaite pas une image du tableau car il faut pouvoir utiliser un ascenseur sur le coté pour faire défiler le tableau qui ne serait qu'en lecture.

    cerede2000 : oui eventuellement le remplissage pourrait me convenir...

  5. #5
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Dans ce cas super simple, tu place un ListBox dans ton USF.

    Et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Activate()
    ListBox1.ColumnHeads = True
    ListBox1.ColumnWidths = "100;100;100;100;100;100;100"
    ListBox1.RowSource = Sheets("Ventes").Range("A2:G19").Address
    End Sub
    Range("A2:G19") représente la plage des valeurs que tu veux.

    Petite astuce, si tu as des entêtes de colonne, commence a la lige du dessous et les headers seront automatiquement placé

    A adapter sur le nombre de colonnes, leurs largeurs.....

  6. #6
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2016
    Messages : 26
    Par défaut
    Je n'y arrive pas le résultat est que je n'affiche qu'une colonne voir copie écran ci-joint. Le tableau que je souhaite afficher est pour mon exemple derrière
    Nom : copie ecran.jpg
Affichages : 13013
Taille : 219,9 Ko

  7. #7
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Ah oui !

    Petit oubli de ma part (que j'ai modifier directement dans les propriétés de l'USF) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ListBox1.ColumnCount = 12
    A adapter selon le nombre de colonnes

  8. #8
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2016
    Messages : 26
    Par défaut
    SUPER !
    Un grand Merci

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    bonsoir
    et pour améliorer la version de cerede2000 je fait ceci
    le dimensionne les colonne a l'identique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub UserForm_Activate()
        Dim plage As Range, i As Long, large
        With Sheets("Ventes")
            Set plage = .Range("A2").CurrentRegion
            For i = 1 To plage.Columns.Count: large = large & ";" & Round(plage.Columns(i).Width): Next    ' on capture la largeur des colonnes
            large = Mid(large, 2, 200)
            With Me.ListBox1
                .RowSource = plage.Address
                .ColumnHeads = True
                .ColumnWidths = large
                .ColumnCount = plage.Columns.Count
            End With
        End With
    End Sub
    et voila
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    J'y avais pensé mais j'avais la flemme

  11. #11
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2016
    Messages : 26
    Par défaut Amélioration du tableau...
    Merci
    Sauf que pour le coup, je n'ai plus l’entête des colonnes. la ligne1 ne sert plus a nommer mes colonnes.
    Pour compliquer le dossier, on imagine que cette liste doit me permettre de pointer les lignes (avec une case a cocher en bout de ligne par exemple) pour que je flag les lignes à transférer.
    Comment faire ?
    La flag doit me faire un retour dans mon tableau excel avec une cellule en bout de ligne qui passe à -1 par exemple pour que je puisse ensuite par macro repérer les lignes flaguées et les transférer
    Je suis ouvert aux propositions : Merci de me remettre l'intégralité du développement à chaques propositions pour que je m'y retrouve.
    MERCI

  12. #12
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re

    exemple listbox avec case a cocher et le message t'affiche les lignes sélectionnées qui doivent normalement correspondre au même tableur dans le sheets
    place le bouton dans ton userform !!!!!!!!!!!!!!!
    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
    26
    27
    Private Sub CommandButton1_Click()
        With ListBox1
            For i = 1 To .ListCount - 1
                If .Selected(i) = True Then mess = mess & i & vbCrLf
            Next
        End With
        MsgBox mess
    End Sub
    Private Sub ListBox1_Click()
        MsgBox ListBox1.ListIndex
    End Sub
    Private Sub UserForm_Activate()
        Dim plage As Range, i As Long, large
        With Sheets("Ventes")
            Set plage = .Range("A1").CurrentRegion
            For i = 1 To plage.Columns.Count: large = large & ";" & Round(plage.Columns(i).Width): Next    ' on capture la largeur des colonnes
            large = Mid(large, 2, 200)
            With Me.ListBox1
                .RowSource = plage.Address
                .ColumnHeads = True
                .ColumnWidths = large
                .ColumnCount = plage.Columns.Count
                .ListStyle = 1
                .MultiSelect = 1
            End With
        End With
    End Sub
    Je suis ouvert aux propositions : Merci de me remettre l'intégralité du développement à chaques propositions pour que je m'y retrouve.
    évite de formuler tes demandes comme ceci de 1 ca fou les boules car personne n'est a ta disposition de 2 c'est un forum d'entraide pas une source de code tout prêt a l'emplois
    je pense pas que se soit volontaire de ta part mais pense y la prochaine fois
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  13. #13
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2016
    Messages : 26
    Par défaut
    Effectivement, ma formulation est plutôt très mal faite. C'était plutôt dans l'idée que si des gens cherchent des solutions a un problème identique, qu'il puisse directement et RAPIDEMENT trouver la solution en arrivant sur le dernier post.
    J'ai toujours énormément du mal a trouver des solutions a mes problèmes sauf en épluchant tout les posts et en recomposant les différents retours.
    Je suis adepte des solutions "toutes faites" sur lequel il est plus facile de partir pour améliorer ou développer des fonctions complémentaires.
    Avant les forums n'existaient pas. c'était compliqué.
    Maintenant les Forums sont là mais pour le coup, trop d'information tue l'information et j'ai l'impression que cela devient un moyen de discussion... au lieu d'aller a l'essentiel.
    Il faut un juste milieu
    Merci pour ta réponse...

    Encore un petit truc est ça va être bon... ou se gère le titre des colonnes ?
    Nom : copie ecran2.jpg
Affichages : 14499
Taille : 121,0 Ko

  14. #14
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Comme indiqué dans mes premiers posts, le titre des colonnes est automatique.
    Il faut décaler ta selection d'une ligne vers le bas pour ne pas prendre la ligne ou se trouve l'entête de colonne, et TADA !!!
    Le nom sera automatiquement affecté

  15. #15
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2016
    Messages : 26
    Par défaut
    Je ne vois pas ou il faut mettre cette emplacement. J'ai modifié dans la ligne Set plage = .Range("A2")....
    sans succes....
    Je ne comprends pas encore tout le code qui est dans la boucle With.
    si tu sais ce qu'il faut insérer et ou...
    MERCI
    Nom : copie ecran3.jpg
Affichages : 12502
Taille : 154,0 Ko

  16. #16
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Ben si tu as déjà changé ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set plage = .Range("A1").CurrentRegion
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set plage = .Range("A2").CurrentRegion
    Je ne vois pas trop....

    Joins ton fichier Excel.

  17. #17
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2016
    Messages : 26
    Par défaut
    Même en mettant A2 ça ne fonctionne pas.
    en debug pas à pas je me rend compte que
    .RowSource = plage.Address et que plage.Address = $A$1:$H$25

    je ne sais pas comment lui faire retirer une ligne...

  18. #18
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Suis-je bête mais si bien sur !
    C'est le CurrentRegion que viens foutre le brin !

    Il renvoi de nouveau toute la plage.... en partant de A1 !
    Essaye ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set plage = .Range("A1").CurrentRegion.Resize(-1).Offset(1)

  19. #19
    Membre averti
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mars 2016
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information

    Informations forums :
    Inscription : Mars 2016
    Messages : 26
    Par défaut
    On est bien d'accord, je remplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             Set plage = .Range("A1").CurrentRegion
    Par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
             Set plage = .Range("A1").CurrentRegion.Resize(-1).Offset(1)
    et J'ai :
    erreur d'exécution 1004
    Erreur définie par l'application ou par l'objet

  20. #20
    Membre Expert
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juillet 2004
    Messages : 2 725
    Par défaut
    Ah ben oui !
    c'est bientôt le WE faut m'excuser....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set plage = .Range("A1").CurrentRegion
    Set plage = plage.Resize(plage.Rows.Count - 1).Offset(1)

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

Discussions similaires

  1. insérer un tableau excel dans word
    Par christophe.rousset dans le forum Word
    Réponses: 3
    Dernier message: 15/06/2010, 11h43
  2. [PPT-2007] Insérer un grand tableau Excel dans PPT lisible en mode diapo
    Par userR dans le forum Powerpoint
    Réponses: 3
    Dernier message: 19/06/2009, 22h36
  3. Insérer un Tableau excel dans Word via VBA depuis Excel
    Par Godzestla dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 14/05/2008, 08h52
  4. [VBA] Insérer Tableau Excel dans Corps d'un Mail (Outlook)
    Par savior dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/10/2006, 11h03
  5. [VBA] insérer un tableau Excel dans un formulaire
    Par Alexj51 dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 08/02/2006, 13h15

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