Bonjour à tous,
Dans le fichier joint, j'affiche un formulaire avec des toggle buttons à l'intérieur d'un frame.
A l'ouverture, ils sont tous décochés.
Je voudrais qu'ils agissent comme des boutons d'options : un seul peut être coché à la fois.
J'ai tapé un code qui ... ne marche pas vraiment !
Private Sub ToggleButtons(idx As Integer)
Dim i As Integer
NePasExecuter = True
For i = 1 To 7
If i <> idx Then Me.FramePtf.Controls("ToggleButton" & i).Value = False
Next i
NePasExecuter = False
End Sub
Private Sub ToggleButton1_Click()
If Not NePasExecuter Then ToggleButtons 1
End Sub
Private Sub ToggleButton2_Click()
If Not NePasExecuter Then ToggleButtons 2
End Sub
Private Sub ToggleButton3_Click()
If Not NePasExecuter Then ToggleButtons 3
End Sub
Private Sub ToggleButton4_Click()
If Not NePasExecuter Then ToggleButtons 4
End Sub
Private Sub ToggleButton5_Click()
If Not NePasExecuter Then ToggleButtons 5
End Sub
Private Sub ToggleButton6_Click()
If Not NePasExecuter Then ToggleButtons 6
End Sub
Private Sub ToggleButton7_Click()
If Not NePasExecuter Then ToggleButtons 7
End Sub
Merci !
Sur le précédent thread, j'ai trouvé ceci qui marche plutôt bien ! (valable pour chaque bouton)
Dim Var As Variant
Dim X As Control
Set Var = Me.ActiveControl
For Each X In UserForm1.Controls
If TypeName(X) = "ToggleButton" And X.Name Like "ToggleButton*" Then
X.Value = False
End If
Next
Bonjour à tous. et pour le fun
Je soumet à votre réflexion et à vos remarques une solution qui peux être utile dans bien d'autres cas
Je l'utilise dans un userform calendrier que je viens de terminer
Cette solution consiste à trouver graphiquement quel contrôle est sollicité par l'utilisateur
Merci sousou, c'est une solution que j'utilise aussi depuis de nombreuses années dans un usfCalendrier... et autre cas de succession de contrôles.
Méthode plus légère à maintenir qu'un module de classe.
Private Sub ToggleClik(Clicked)
Dim Toggle As Control
For Each Toggle In Me.FramePtf.Controls
Toggle.Value = Toggle.Name = Clicked
Next
End Sub
Private Sub ToggleButton2_Click()
ToggleClik FramePtf.ActiveControl.Name
End Sub
Private Sub ToggleButton3_Click()
ToggleClik FramePtf.ActiveControl.Name
End Sub
Private Sub ToggleButton4_Click()
ToggleClik FramePtf.ActiveControl.Name
End Sub
Private Sub ToggleButton5_Click()
ToggleClik FramePtf.ActiveControl.Name
End Sub
Private Sub ToggleButton6_Click()
ToggleClik FramePtf.ActiveControl.Name
End Sub
Private Sub ToggleButton7_Click()
ToggleClik FramePtf.ActiveControl.Name
End Sub
@job
Encore faut-il, dans ta proposition, connaitre le nombre de ToggleButton.
VB:
Public tablo(1 To 7) As New Classe1, flag As Boolean
Si tu passes à 10 - toujours un nombre fixe - le code plante.
C'est normal : le positionnement dynamique des boutons devrait impliquer le redimensionnement du USF...
Positionnement dynamique des boutons :