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 :

Plusieurs CheckBox dans une ListBox [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Employé administratif
    Inscrit en
    Juillet 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Employé administratif
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2018
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Plusieurs CheckBox dans une ListBox
    Bonsoir, je bloque sur une question ou je n'arrive pas a trouver ma solution.
    J'aimerais savoir si il y a possibilité que plusieurs CheckBox soit visible dans une ListBox ?
    Exemple que si je clique sur les CheckBox A et B, l'ensemble des informations des cellules
    ("A5:C10") + ("A15:C19") Soit visible ?

    c'est possible ?

    Voici une partie de mon code que j'utilise

    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
    Private Sub CheckBoxA_Click()
    If CheckBoxA.Value = True Then 'Si coché ...
    Range("Q7").Value = "A"
    ListBox1.ColumnCount = 3
    ListBox1.ColumnWidths = "30;170;30"
    ListBox1.RowSource = ("A5:C10")
    Else 'Si non coché ...
    Range("Q7").Value = ""
    ListBox1.RowSource = ""
    End If
    End Sub
    Private Sub CheckBoxB_Click()
    If CheckBoxB.Value = True Then 'Si coché ...
    Range("Q8").Value = "B"
    ListBox1.ColumnCount = 3
    ListBox1.ColumnWidths = "30;170;30"
    ListBox1.RowSource = ("A15:C19")
    Else 'Si non coché ...
    Range("Q8").Value = ""
    ListBox1.RowSource = ""
    End If
    End Sub

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    il faudrait que tu boucles sur les checkbox pour alimenter ta listbox avec .additem
    Il faut aussi que tu puisses retrouver les lignes concernées pour les supprimer si décochée.
    Soit c'est faisable avec les 3 valeurs, soit il faut garder à jour un tableau.
    eric

  3. #3
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Une piste :
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    Private Sub UserForm_Initialize()
     
        ListBox1.ColumnCount = 3
        ListBox1.ColumnWidths = "30;170;30"
     
    End Sub
     
    Private Sub CheckBoxA_Click()
     
        Remplir
     
    End Sub
     
    Private Sub CheckBoxB_Click()
     
        Remplir
     
    End Sub
     
    Sub Remplir()
     
        Dim Plage As Range
        Dim Tbl()
        Dim I As Long
        Dim J As Long
        Dim Cel As Range
     
        ListBox1.Clear
     
        If CheckBoxA.Value = True Then Set Plage = Range("A5:C10")
        If CheckBoxB.Value = True Then Set Plage = Range("A15:C19")
        If CheckBoxA.Value = True And CheckBoxB.Value = True Then Set Plage = Union(Range("A5:C10"), Range("A15:C19"))
     
        If Plage Is Nothing Then Exit Sub
     
        J = 1
     
        For Each Cel In Plage
     
            I = I + 1
            ReDim Preserve Tbl(1 To 3, 1 To J)
            Tbl(I, J) = Cel.Value
            If I = 3 Then I = 0: J = J + 1
     
        Next Cel
     
        ListBox1.List = Application.Transpose(Tbl)
     
    End Sub

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Employé administratif
    Inscrit en
    Juillet 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Employé administratif
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juillet 2018
    Messages : 4
    Points : 5
    Points
    5
    Par défaut Re
    Bonjour,

    un grand merci pour vos réponses. Theze, ton code marche très bien.
    Merci pour votre rapidité de réponse

    Bon week-end

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

Discussions similaires

  1. Sélectionner plusieurs items dans une listbox
    Par ancrou dans le forum Interfaces Graphiques
    Réponses: 1
    Dernier message: 13/07/2007, 19h28
  2. Selectionner plusieurs elements dans une ListBox
    Par kacedda dans le forum MFC
    Réponses: 2
    Dernier message: 01/03/2007, 08h27
  3. Afficher plusieurs colonnes dans une ListBox
    Par codial dans le forum Bases de données
    Réponses: 11
    Dernier message: 23/01/2007, 12h48
  4. Afficher plusieurs champs dans une listbox
    Par fabien.benard dans le forum IHM
    Réponses: 2
    Dernier message: 14/11/2006, 16h37
  5. CheckBox dans une ListBox ?
    Par soad029 dans le forum IHM
    Réponses: 23
    Dernier message: 11/11/2006, 00h06

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