Afficher le contenu d'une ComboBox en fonction d'une CheckBox

chouki60

XLDnaute Nouveau
Bonjour à tous,

Je viens de créer une UserForm et je souhaite que le contenu d'une comboBox ne s'affiche que si la CheckBox est activée.
Voici mon code :
Code:
Private Sub UserForm_Initialize()

    Dim i As Integer
    For i = 1 To 5
    Me.Controls("CheckBox" & i) = False
    Next i
    For i = 6 To 21
        Me.Controls("CheckBox" & i).Visible = False       
    Next i  
End Sub

Code:
Private Sub CheckBox5_Click()
    If CheckBox5.Value = -1 Then
        ComboBox2.ColumnCount = 16
    Else
        ComboBox2.ColumnCount = 0
    End If
End Sub
.

Je pense que mon erreur se situe au niveau du code CheckBox5 mais je ne trouve pas où..

Merci de votre aide !

Chouki60
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Afficher le contenu d'une ComboBox en fonction d'une CheckBox

Bonjour Chouki, Pierrot, bonjour le forum,

D'après ton code, l'alimentation de la ComboBox2 semble être faite par RowSource... Si tu désires garder la ComboBox2 visible (car l'idée de Pierrot me semble la plus simple), tu pourrais alors l'alimenter ou la vider en fonction de la CheckBox. Penser à supprimer éventuellement la propriété RowSource dans ce cas...
Code:
Private Sub CheckBox5_Click()
If CheckBox5.Value = True Then
     'ComboBox2.ColumnCount = 16 (en dur dans les propriétés)
     '... le code d'alimentation de la ComboBox2
Else
     ComboBox2.Clear
End If
End Sub
 

Dranreb

XLDnaute Barbatruc
Re : Afficher le contenu d'une ComboBox en fonction d'une CheckBox

Bonjour Chouki et Pierrot (60 et 93 respectivement) et Robert.
Oui mais s'il n'y a pas encore de combo visible, l'utilisateur ne serait pas tenter d'aller constater inutilement que sa liste est vide !
L'idée de Pierrot me semble donc meilleure.
À+
 

Pierrot93

XLDnaute Barbatruc
Re : Afficher le contenu d'une ComboBox en fonction d'une CheckBox

Re, bonjour Robert, Bernard

regarde ci-dessous, fonctionne si combo pas alimentée par "rowsource" (souvent source d'ennui), exemple pour 2 colonnes, soit tu modifies la largeur des colonnes, soit le nombre de colonnes... A adapter..
Code:
Option Explicit
Private Sub CheckBox1_Click()
With ComboBox1
'If CheckBox1 Then .ColumnWidths = "20;20" Else .ColumnWidths = "0;0"
If CheckBox1 Then .ColumnCount = 2 Else .ColumnCount = 0
End With
End Sub
Private Sub UserForm_Initialize()
With ComboBox1
    .ColumnCount = 2
    .ColumnWidths = "20;20"
    .List = Range("A1:B10").Value
End With
CheckBox1.Value = True
End Sub
 

Dranreb

XLDnaute Barbatruc
Re : Afficher le contenu d'une ComboBox en fonction d'une CheckBox

L'alimentation par RowSource à toujours très bien marché pour moi.
Il est vrai que je ne me suis jamais amusé à essayer d'associer une formule dymamique au nom de la plage qui devait l'alimenter.
À+
 

Si...

XLDnaute Barbatruc
Re : Afficher le contenu d'une ComboBox en fonction d'une CheckBox

Salut
Si... la liste est déjà initialisée, je me contenterais de
Code:
Private Sub CheckBox5_Click()
    ComboBox2.Visible = CheckBox5
End Sub

D'accord avec toi, Pierrot93, quant à ta remarque sur "RowSource"
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : Afficher le contenu d'une ComboBox en fonction d'une CheckBox

pas top lorsque tu veux enlever / rajouter un élément...
Cela va de soit: convient parfaitement à une liste toujours fidèle au contenu d'une plage fixe genre clé d'une sorte de dictionnaire, liste d'articles etc. à l'exclusion de tout autre cas où il convient de ne pas l'utiliser mais de garnir la proprité List de façon appropriée.
Cordialement
 

laetitia90

XLDnaute Barbatruc
Re : Afficher le contenu d'une ComboBox en fonction d'une CheckBox

bonjour les amis :):):):):):):)
tout a fait d'accord avec Pierrot:):)
RowSource a bannir trés embetant de faire une sélection filtrée des items ou de les trier
de faire un remove ect..
de loin preferer .list ou passer par un "tablo"

de plus pour moi ces lignes de code servent a rien!!!
Code:
Dim i As Integer
    For i = 1 To 5
    Me.Controls("CheckBox" & i) = False
    Next i
    For i = 6 To 21
        Me.Controls("CheckBox" & i).Visible = False
    Next i

de 1 to 5
par defaut les CheckBox sont a false
6 To 21
dans proprietées les definir visible a false

bien plus simple??
 

Discussions similaires

Statistiques des forums

Discussions
311 723
Messages
2 081 934
Membres
101 844
dernier inscrit
pktla