VBA Mettre différentes couleurs pour case à cocher

L.paris

XLDnaute Nouveau
Bonjour,
Je voudrais changer l'état de couleur de la case en fonction de l' état de mes autres cases.

Mais le souci, c'est qu' il prend l'état que de ma deuxième demande et ne prend pas en compte la 1ere.
================================================================
Private Sub i10_Click()
If i10.Value = True And RG.Value = True Then
i10.BackColor = &H80FF&
Else
i10.BackColor = &H80C0FF
End If
If i10.Value = True And CheckBox31.Value = True Then
i10.BackColor = &H8080FF
Else
i10.BackColor = &HC0C0FF
End If
End Sub

===============================================================
Merci pour vos commentaires

Cordialement

PL
 

Dranreb

XLDnaute Barbatruc
Re : VBA Mettre différentes couleurs pour case à cocher

Bonjour

Mon 1er commentaire c'est qu'il est idiot de comparer une propriété booléenne à True puisque:
True = True c'est True,
False = True c'est False, donc
i10.value = True c'est i10.Value tout seul.

Ensuite: je vous conseille d'établir une table de décision des couleurs souhaitées en regard des 8 combinaisons d'états possibles de i10.Value, RG.Value et CheckBox31.Value

À +
 

Hulk

XLDnaute Barbatruc
Re : VBA Mettre différentes couleurs pour case à cocher

Hello,

Je lui propose plutôt d'agir sur CheckBox31 et RG comme ceci par exemple
Code:
Private Sub CheckBox31_Click()
    
    If i10.Value And CheckBox31.Value Then
        i10.BackColor = &H8080FF
        RG.Value = False
    ElseIf i10.Value And RG.Value Then
        i10.BackColor = &H80FF&
        CheckBox31.Value = False
    ElseIf i10.Value And RG.Value = False Then
        i10.BackColor = &HFFFFFF
    ElseIf i10.Value And CheckBox1.Value = False Then
        i10.BackColor = &HFFFFFF
    Else
        i10.BackColor = &HFFFFFF
    End If

End Sub

Private Sub RG_Click()
    
    If i10.Value And RG.Value Then
        i10.BackColor = &H80FF&
        CheckBox31.Value = False
    ElseIf i10.Value And CheckBox31.Value Then
        i10.BackColor = &H8080FF
        RG.Value = False
    ElseIf i10.Value And CheckBox31.Value = False Then
        i10.BackColor = &HFFFFFF
    ElseIf i10.Value And RG.Value = False Then
        i10.BackColor = &HFFFFFF
    Else
        i10.BackColor = &HFFFFFF
    End If
    
End Sub
NB : Par pitié déposez un petit fichier, c'est plus simple pour ceux qui veulent aider (par exemple, dans ce cas je ne sais pas si RG est un CheckBox ou un OptionButton, si tu travailles sur la feuille ou dans un UserForm... You see..)
 
Dernière édition: