Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Checkbox - Donner une valeur via une boucle

2 réponses
Avatar
Jean Bonbeurre
Bonjour,

J'ai plusieurs checkbox dans une feuilles. Leur nombre peut varier d'une
feuille à l'autre mais le traitement est toujours le même.

Quand elles sont cochées, le fond est vert, quand elles sont décochées, le
fond est rouge.

If CheckBox2.Value = True Then
' vert
CheckBox2.BackColor = RGB(0, 232, 0)
Else
' rouge
CheckBox2.BackColor = RGB(240, 0, 0)

End If

A chaque fois que j'en ajoute une, je dois aller ajouter le code pour cette
nouvelle checkbox.

Comment faire cela automatiquement une seule fois par une boucle et que le
code ne se trouve qu'une seule fois pour la feuille ?

Merci

2 réponses

Avatar
lSteph
Bonjour,

On utilisera Feuil1 comme contenant des Chbx et le ThisWorkbook pour
initialiser donc le code sera actif à l'ouverture du classeur.

Insère un module standard
puis un module de classe ,
Affiche la fenêtre des propriété afin de renommer ce dernier:

ChbxClass

Mets ce code (ci en bas ) dans les modules indiqués
Cordialement.
LSteph

''''''dans le module ChbxClass
Option Explicit

Public WithEvents mychb As msforms.CheckBox

Private Sub myChb_Click()
If mychb.Object.Value = True Then
' vert
mychb.BackColor = RGB(0, 232, 0)
Else
' rouge
mychb.BackColor = RGB(240, 0, 0)
End If
End Sub

''''dans module standard
Option Explicit
Public myCollect As Collection

'''''''dans ThisWorbook
Option Explicit
Private Sub Workbook_Open()
Dim olb As OLEObject, mycl As ChbxClass
Set myCollect = New Collection
For Each olb In Feuil1.OLEObjects
If TypeOf olb.Object Is msforms.CheckBox Then
Set mycl = New ChbxClass
Set mycl.mychb = olb.Object
myCollect.Add mycl
End If
Next olb
End Sub
Avatar
Jean Bonbeurre
Merci


Bonjour,

On utilisera Feuil1 comme contenant des Chbx et le ThisWorkbook pour
initialiser donc le code sera actif à l'ouverture du classeur.

Insère un module standard
puis un module de classe ,
Affiche la fenêtre des propriété afin de renommer ce dernier:

ChbxClass

Mets ce code (ci en bas ) dans les modules indiqués
Cordialement.
LSteph

''''''dans le module ChbxClass
Option Explicit

Public WithEvents mychb As msforms.CheckBox

Private Sub myChb_Click()
If mychb.Object.Value = True Then
' vert
mychb.BackColor = RGB(0, 232, 0)
Else
' rouge
mychb.BackColor = RGB(240, 0, 0)
End If
End Sub

''''dans module standard
Option Explicit
Public myCollect As Collection

'''''''dans ThisWorbook
Option Explicit
Private Sub Workbook_Open()
Dim olb As OLEObject, mycl As ChbxClass
Set myCollect = New Collection
For Each olb In Feuil1.OLEObjects
If TypeOf olb.Object Is msforms.CheckBox Then
Set mycl = New ChbxClass
Set mycl.mychb = olb.Object
myCollect.Add mycl
End If
Next olb
End Sub