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 :

Tableau dans usrform


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2024
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2024
    Messages : 36
    Par défaut Tableau dans usrform
    Bonjour,

    Après de multiple recherche, j'arrive pas à comprendre comment on met un tableau dans USERFORM.

    Pour l'exemple, je vous joins un fichier que j'ai déjà préparé.
    Dans l'onglet DATA, j'ai plusieurs référence. Ces références, on a des taches à accomplir pour chacune.
    Lorsque je veux voir une référence, j'aimerai avoir un récapitulatif des taches associées avec les différentes informations (voir fichier)

    J'ai crée un onglet TABLEAU avec un tableau d'exemple.

    Sinon, j'ai commencé à travaillé dessus, notamment trouvé la ligne de la référence demandé et l'intégré dans la variable : LigneOF_DATA

    Voici le fichier :
    Tableau_Userform_V1.0.xlsm

    Je continue mes investigations

    Lieb

    EDIT :


    .ColumnCount indique le nombre de colonne à prendre en compte :

    Comment faire pour lui dire qu'il prend en compte l'ensemble des colonnes et s'arrete quand il n'y a plus d'info.
    Dans mon tableau, l'ensemble des données vont de la colonne AG à JV


    Ci-dessous, j'utilise ce code pour indiquer la colonne AG comme point de départ
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .RowSource = WbArchive.Worksheets("GESTION_EXECUTANT").Range("AG" & LigneOF_Gestion_Executant & ":" & "JV" & LigneOF_Gestion_Executant).Address

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 946
    Par défaut
    Salut, teste ceci, en espérant avoir compris ta demande. Au passage, je me demande pourquoi tu utilises 3 lignes d'instruction avec utilisation de variable pour afficher ton userform au lieu de simplement UserForm1.Show ?

    Tableau_Userform_V1.0.xlsm

  3. #3
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2024
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2024
    Messages : 36
    Par défaut
    Citation Envoyé par Franc Voir le message
    Salut, teste ceci, en espérant avoir compris ta demande. Au passage, je me demande pourquoi tu utilises 3 lignes d'instruction avec utilisation de variable pour afficher ton userform au lieu de simplement UserForm1.Show ?

    Tableau_Userform_V1.0.xlsm
    Merci à toi,

    Par contre comment je peux récuperer la ligne des titres des colonnes dans ListBox ?
    Plusieurs tentatives en vain...

    Voici un exemple :

    Nom : exemple.png
Affichages : 173
Taille : 163,7 Ko

    Mes quelques tests sont en vain ...

    Sinon, effectivement pour l'appel USERFORM, ta solution est parfaite.

    lieb

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 962
    Par défaut
    bjr
    je bricole ceci
    à adapter et tester avec prudence
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Private Sub TextBox1_Change()
    ListBox1.Clear
    Dim O As Worksheet
    Set O = Sheets("DATA")
    Dim Derlig As Long
    Dim Lista As Variant
    Application.ScreenUpdating = False
    Derlig = O.Cells(Rows.Count, 2).End(xlUp).Row
    CRITERE = TextBox1.Value
     
     If O.AutoFilterMode = True Then
     O.AutoFilterMode = False
     End If
     O.Range("$B$4:$Q$" & Derlig).AutoFilter Field:=1, Criteria1:=CRITERE
     
     Dim C As Range
     With ListBox1
        .ColumnCount = 7
        .ColumnWidths = "100;80;100;50;100;60;50"
    End With
     
    LastLig = O.Cells(O.Rows.Count, 3).End(xlUp).Row
     
        If O.Range("C5:C" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then
        For Each C In O.Range("C5:C" & LastLig).SpecialCells(xlCellTypeVisible)
            ListBox1.AddItem C.Value
            Me.ListBox1.List(ListBox1.ListCount - 1, 1) = C.Offset(0, 1).Value
            Me.ListBox1.List(ListBox1.ListCount - 1, 2) = C.Offset(0, 2).Value
            Me.ListBox1.List(ListBox1.ListCount - 1, 3) = C.Offset(0, 3).Value
            Me.ListBox1.List(ListBox1.ListCount - 1, 4) = C.Offset(0, 4).Value
            Me.ListBox1.List(ListBox1.ListCount - 1, 5) = C.Offset(0, 5).Value
             Me.ListBox1.List(ListBox1.ListCount - 1, 6) = C.Offset(0, 6).Value
     
        Next C
        End If
     O.ShowAllData
    Application.ScreenUpdating = True
    End Sub
    Fichiers attachés Fichiers attachés

  5. #5
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2024
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2024
    Messages : 36
    Par défaut
    Merci pour ton retour,

    J'ai glané quelques infos.

    En fait j'aimerai dans mon userform que j'ai un tableau similaire.

    Nom : tableau exemple.png
Affichages : 153
Taille : 6,3 Ko

    Je n'arrive pas à comprendre comment faire pour avoir les en-têtes de mes colonnes dans la première ligne (voir exemple image ci-dessus)

    Je cherche et si je trouve, j'édite. Mais pour l'instant je bloque....

    Lieb

    EDIT :

    Alors j'ai trouvé ceci comme code, mais je n'arrive pas à l'adapter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
             'Ajouter les en-têtes de colonnes
             For Each rngCell In Tbl.HeaderRowRange.Cells
                 .ColumnHeaders.Add Text:=rngCell.Value, Width:=90
              Next rngCell
            .ColumnHeaders.Add Text:="row", Width:=20
            .ColumnHeaders(1).Width = 40: .ColumnHeaders(1).Alignment = lvwColumnLeft
            .ColumnHeaders(2).Width = 40: .ColumnHeaders(2).Alignment = lvwColumnCenter
            .ColumnHeaders(3).Width = 40: .ColumnHeaders(3).Alignment = lvwColumnCenter
            .ColumnHeaders(4).Width = 100: .ColumnHeaders(4).Alignment = lvwColumnCenter
            .ColumnHeaders(5).Width = 100: .ColumnHeaders(5).Alignment = lvwColumnCenter
            .ColumnHeaders(6).Width = 50: .ColumnHeaders(6).Alignment = lvwColumnCenter
            .ListItems.Clear
        End With


    En fait, je voudrais faire une boucle en fonction de la référence, par exemple TUTU
    Et j'ai dans ListBox 1 sur le coté gauche : Tache 1; Tache 2; Tache 3
    Puis face à chacune des taches sur sa ligne correspondante les infos du tableau

    ça donnerai :

    TACHE Date Date Qts Qts Statut
    Récept. Prise Charge Recu Realise
    TACHE 1 23/09/2024 24/09/2024 20 15 En Cours
    TACHE 2 02/04/2024 21/09/2024 15 15 Terminé
    TACHE 3 05/09/2024 22/09/2024 15 10 Terminé

    Merci

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 946
    Par défaut
    Salut, il me semble que tes désirs changent en cours de route. Ta deuxième capture d'écran diffère de la première et d'après ton code, maintenant tu travailles avec un tableau structuré ???
    Voici une suggestion qui sera ma dernière contribution à ta demande, mais ce ne sera pas avec tableau structuré.

    Tableau_Userform_V1.0.xlsm

  7. #7
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2024
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2024
    Messages : 36
    Par défaut
    Bonjour,

    Super, j'ai un super base.
    Effectivement, j'ai du corriger mes écrits au fur et à mesure de monter en compétence sur ce sujet. Je suis maintenant intermediaire en VBA mais pas encore autonome et merci au forum qui m'aura permis de bucher beaucoup de chose.

    Par contre, j'ai voulu tester .ColumnHeads = True dans la partie With Me.ListBox1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
        With Me.ListBox1
            '.ColumnHeads = True
            .ColumnCount = 7
            .ColumnWidths = "90;90;90;90;90;90;90"
            .AddItem
            .List(0, 0) = "N° DE TÂCHE"
            .List(0, 1) = "N° EMPLOYE"
            .List(0, 2) = "DATE DEBUT TACHE"
            .List(0, 3) = "DATE FIN TACHE"
            .List(0, 4) = "Nb Pièce reçu"
            .List(0, 5) = "Nb pièce réalisée"
            .List(0, 6) = "STATUT"
        End With

    J'aimerai avoir les entêtes dans la partie titre. Est-il possible de centrer et avoir une écriture en gras avec et ajouter un peu de couleur avec un fond ? En résumé, si vous avez un lien d'un référentiel suis preneur
    Nom : essai_2.png
Affichages : 142
Taille : 3,6 Ko
    merci à vous

    Lieb

  8. #8
    Membre expérimenté
    Homme Profil pro
    CIP
    Inscrit en
    Avril 2024
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : CIP
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2024
    Messages : 194
    Par défaut re
    Bonjour juste en passant
    ce que tu demande n'est pas possible pour une listbox
    une liste box ne peut avoir
    qu'un seul font size
    en gras entièrement ou pas
    bref tout ce qui est style de texte s'applique à la listbox dans son entièreté

    quand à l'entête tu ne peut l'avoir qu'avec RowSource
    si tu utilise rowsource il te faudra utiliser le tableau structuré dans son entièreté(son entête compris )

    si tu utilise le .list ou le remplissage par additem tu ne l'aura pas il te faudra bricoler des labels au dessus

    et si tu cherchais a faire la différence entre une listbox et un listview en essayant de chercher le tutoriel (il y en a un ici me semble t il)
    tu pédalerais moins dans le vide selon moi
    le listview a l'entête paramétrable d'ailleurs le code que tu a trouvé concerne un listview (PAS UN LISTBOX)
    le listview peux te permettre de mettre en gras ou en couleur ou une police etc.particulier dans un item ou subitem
    par contre pour ce qui est du backcolor non sur le listview de vba ce n'est pas possible c'a l'est sur le litview dans vb6 par contre
    mais pour vba il te faudra utiliser certaines api windows et GDI pour beautifier le listview comme tu le souhaiterait
    mais vu ton niveau en vba je pense qu'il serait judicieux de revoir tes souhaits à la baisse (sans vouloir offenser personne)
    parfois (même souvent)les choses simples sont les plus pérennes

    à méditer
    patrick

  9. #9
    Membre expérimenté
    Homme Profil pro
    CIP
    Inscrit en
    Avril 2024
    Messages
    194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : CIP
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2024
    Messages : 194
    Par défaut re
    re
    :
    au mieux tu pourrais avoir ceci en bricolant des labels
    Nom : Capture.JPG
Affichages : 139
Taille : 75,1 Ko
    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
    Private Sub UserForm_Activate()
        Set plage = Range("tableau1")
        ListBox1.List = plage.Value
        ListBox1.TextAlign = 2
     
        For i = 1 To plage.Columns.Count
            Set lab = Me.Controls.Add("forms.Label.1", "ent" & 1, True)
            With lab
                lab.Caption = Range("tableau1[#all]").Cells(1, i).Value
                .Height = 13
                .Width = 60 + 10
                .Left = ListBox1.Left + ((i - 1) * 60)
                .Top = ListBox1.Top - .Height
                .BorderStyle = 1
                .BorderColor = vbWhite
                .BackColor = Range("tableau1[#all]").Rows(1).DisplayFormat.Interior.Color
                .ForeColor = vbWhite
                .TextAlign = 2
                .Font.Name = "algerian"
            End With
        Next
     
    End Sub
    j'ai tout dit

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    817
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 817
    Par défaut
    Bonjour,

    Voici une autre solution dans un UserForm avec une ListBox pour les entêtes et la seconde pour les donnée.
    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
    Private Sub UserForm_Initialize()
        ListBox1.ColumnCount = 4
        ListBox1.ColumnWidths = ("60;60;60;50")
        ListBox2.ColumnCount = 4
        ListBox2.ColumnWidths = ("60;60;60;50")
        ListBox2.List = Range("Tableau1").Value
        'entêtes ListBox
        'Set tb1 = Range("Tableau1").ListObject
        'With tb1
        '    ListBox1.Column = Application.Transpose(.HeaderRowRange.Value)
        'End With
        'OU
        'Me.ListBox1.List = Range("Tableau1[#all]").Rows(1).Value 'en-tête tableau
        'OU
        Me.ListBox1.List = Sheets("Feuil1").ListObjects(1).HeaderRowRange.Value
    End Sub
    Nom : Image1.png
Affichages : 116
Taille : 17,1 Ko

  11. #11
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    975
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 975
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Les contrôles Listview permettent plus de choix en terme de couleur et de mise en forme, sinon
    https://silkyroad.developpez.com/VBA/ListView/

  12. #12
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Septembre 2024
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2024
    Messages : 36
    Par défaut
    Citation Envoyé par tototiti2008 Voir le message
    Bonjour,

    Les contrôles Listview permettent plus de choix en terme de couleur et de mise en forme, sinon
    https://silkyroad.developpez.com/VBA/ListView/
    Merci pour le lien.

    Bien à vous,

    Lieb

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

Discussions similaires

  1. [ STRUTS ] [ LOGIC:ITERATE ] tableau dans un formulaire
    Par LoulouFifi dans le forum Struts 1
    Réponses: 3
    Dernier message: 18/06/2004, 17h19
  2. Tableau dans une interface idl
    Par Polochon2001 dans le forum CORBA
    Réponses: 2
    Dernier message: 14/05/2004, 10h44
  3. [langage] Tableau dans hashage
    Par iago dans le forum Langage
    Réponses: 2
    Dernier message: 26/01/2004, 17h19
  4. [VB6]Passage d'un tableau dans une DLL écrite en delphi
    Par flash dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 20/09/2002, 11h15
  5. Réponses: 2
    Dernier message: 27/05/2002, 20h46

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