Dans un UserForm j’ai placé un Frame1 contenant un premier CommandButton1 à action spécifique et douze autres qui auront la même réaction (CommandButton2 à CommandButton13).
Dans le code VBA j’y ai mis un :
For i= 2 to 13 pour ne pas multiplier cette macro sous forme de « Private Sub OptionButton2_Click() à Private Sub OptionButton13_Click() ».
Voici la codification actuelle qui fonctionne si je clique sur le pourtour du Frame1 :
VB:
Private Sub Frame1_Click()
Dim i As Integer
If Me.Controls("OptionButton1").Value = True Then
ActiveCell = ""
End If
For i = 2 To 13
If Me.Controls("OptionButton" & i).Value = True Then
ActiveCell = Me.ListBox1 & Chr(10) & Me.Controls("OptionButton" & i).Caption
End If
Next i
Unload Me
End Sub
Le problème est que pour sortir de l’userform il me faut cliquer sur le bord du Frame1.
Je voudrais sortir de l’Userform dès qu’un ctrl.Value passe en True.
Pour cela comment modifier la composition macro ci-dessus pour appliquer le « Unload Me » dès qu’un des OptionButton passe en True ou me faut-il faire 12 fois ceci en changeant le n° du CommandButton, de 2 à 13 -que je voudrais éviter- ?
VB:
Private Sub OptionButton2_Click()
For Each ctrl In UserForm1.Frame1.Controls
If ctrl.Value = True Then ActiveCell = Me.ListBox1 & Chr(10) & ctrl.Caption
Next
Unload Me
End Sub
Le Forum,
Monsieur Boisgontier, bonsoir,
Youpi ! Nous avons une belle solution !
Voici mon adaptation : telle que je la désirais dans son usage.
Mission accomplie, grâce à vous trois, merci.
Bien cordialement,
Webperegrino