Private Sub CommandButton1_Click()
Dim c As Control
For Each c In Me.Controls
If TypeName(c) Like "OptionButton*" Then
If c.Value = True Then
MsgBox "ok"
Exit Sub
End If
End If
Next c
MsgBox "pas ok"
End Sub
Private Sub CommandButton1_Click()
Dim c As Control
For Each c In Me.Controls
If TypeName(c) = "OptionButton" Then
If c Then MsgBox "Ok": Exit Sub
End If
Next
MsgBox "Pas ok"
End Sub
Si... je puis me permettre, une solution semblable mais avec une légère différence :
Code:
Private Sub CommandButton1_Click()
Dim c As Control, mess As String
mess = "pas OK"
For Each c In Me.Controls
If TypeOf c Is MSForms.OptionButton Then
If c Then mess = "OK": Exit For
End If
Next
MsgBox mess
End Sub
Et, si les boutons sont peu nombreux, une seule ligne suffit :
Code:
Private Sub CommandButton1_Click()
MsgBox IIf(Application.Max(OptionButton1, OptionButton2, OptionButton3, OptionButton4) > 0, "OK", "pas OK")
End Sub
un petit rappel concernant les optionbuttons :
- ne pas confondre checkbox(option [0 à n] au sens français du terme) et optionbutton(alternative [1/n] au sens français)
- Les contrôles Optionbutton (Boutons d'option) permettent de faire un choix parmi plusieurs .
- Lorsqu'une des options est sélectionnée, les autres sont toutes désactivées.
- A l'initalisation du Userform, 1 optionbutton et un seul devrait et peut etre actif(propriété exclusive lors de la conception)
- la propriété click permet d'affecter à une variable le N° du optionbutton activé
dans la série peu de boutons (renommés O1, O2, ..., O4)
Code:
Private Sub CommandButton1_Click()
MsgBox IIf(O1 + O2 + O3 + O4 = 0, "KO", "OK")
End Sub
à Modeste geeddee : il peut se trouver quelques lignes ailleurs qui mettent les options à False !
Tu me diras qu'un contrôle visuel peut suffire, sauf Si... on regarde ailleurs !