J'ai un fichier excel avec un userform avec dessus une centaine de checkbox.
J'aimerais que lorsque j'ouvre cet userform si une checkbox est cochée que le texte de cette dernière soit d'une autre couleur. J'ai bien pensé à sa :
Code:
If checkbox1.value = true then ...
mais pour 96 checkbox ça va être long. Je pense à une boucle mais je ne parviens pas à la faire.
avec ce code: les checkbox cochés apparaitront en vert à l'ouverture de l'USF
Code:
Private Sub UserForm_Initialize()
For i = 1 To 96
If Me.Controls("checkbox" & i).Value = True Then Me.Controls("checkbox" & i).BackColor = RGB(0, 255, 0)
Next i
End Sub
Private Sub UserForm_Initialize()
For i = 1 To 96
If Me.Controls("checkbox" & i).Value = True Then Me.Controls("checkbox" & i).ForeColor = RGB(0, 255, 0)
Next i
End Su
Donc un module de classe (ALT+F11 Insertion/Module de classe)
Le nommer: ClsCheckBox
Code:
Option Explicit
Public WithEvents oCBX As MSForms.CheckBox
Private Sub oCBX_Click()
oCBX.ForeColor = IIf(oCBX, vbBlue, vbBlack)
End Sub
Dans le code l'userform
Code:
Dim CBOX() As New ClsCheckBox
Private Sub UserForm_Initialize()
Dim oCL As Control
Dim x As Byte
For Each oCL In Me.Controls
If TypeName(oCL) = "CheckBox" Then
x = x + 1
ReDim Preserve CBOX(1 To x)
Set CBOX(x).oCBX = oCL
End If
Next oCL
Set oCL = Nothing
End Sub