Boutons d'option : séparer les choix ?
Bonjour,
J'aimerais faire fonctionner plusieurs "listes" de boutons d'option de manière indépendante.
Dans l'image que je vous joins en fin de message, je cherche à ce que :
- Lorsqu'on clique sur CommandButton1, l'action enclenchée dépende du choix fait entre les OptionButtons 1 et 2 seulement ;
- Lorsqu'on clique sur CommandButton2, l'action enclenchée dépende du choix fait entre les OptionButtons 3 et 4 seulement.
Il faut donc que lorsque je sélectionne l'un des deux OptionButtons 1 ou 2 (que je veux "lier" au CommandButton 1), je puisse aussi sélectionner l'un des deux OptionButtons 3 ou 4 (que je veux "lier" au CommandButton 2).
Or, en l'état actuel de mon PPT, ce n'est pas possible : je suis obligé de choisir entre les OptionButtons 1, 2, 3 et 4. On ne peut pas en sélectionner deux à la fois : un à gauche, sous le CommandButton1, et un à droite, sous le CommandButton2.
Comment faire, donc, pour "séparer les choix" entre les options de gauche et celles de droite ?
Sachant que mon code est le suivant :
Private Sub CommandButton1_Click()
ActivePresentation.Slides(2).Shapes("Cadre_N°_Question").TextFrame.TextRange.Characters.Text = "1"
If OptionButton1.Value = True Then
ActivePresentation.Slides(2).Shapes("[Image Réponse]").Visible = True
ActivePresentation.Slides(2).Shapes("[Image Réponse + Zoom]").Visible = False
ElseIf OptionButton2.Value = True Then
ActivePresentation.Slides(2).Shapes("[Image Réponse]").Visible = False
ActivePresentation.Slides(2).Shapes("[Image Réponse + Zoom]").Visible = True
End If
End Sub
Private Sub CommandButton2_Click()
ActivePresentation.Slides(2).Shapes("Cadre_N°_Question").TextFrame.TextRange.Characters.Text = "2"
If OptionButton3.Value = True Then
ActivePresentation.Slides(2).Shapes("[Image Réponse]").Visible = True
ActivePresentation.Slides(2).Shapes("[Image Réponse + Zoom]").Visible = False
ElseIf OptionButton4.Value = True Then
ActivePresentation.Slides(2).Shapes("[Image Réponse]").Visible = False
ActivePresentation.Slides(2).Shapes("[Image Réponse + Zoom]").Visible = True
End If
End SubVoici l'image d'illustration :
Je vous remercie d'avance !
Bon week-end.
Bonjour,
ajoute simplement un "cadre" (frame) autour de tes groupes de boutons ... , tu place 2 cadre sur ton userform et tu déplace dans chacun d'eux le bouton et le les case à options qui lui sont associées...
Bonsoir,
Utilise le Group Name dans les propriétés de tes optionbuttons pour les lier entre eux.
Tu associes les bouttons 1 et 2 à un groupe, 3 et 4 à un autre pour qu'ils puissent fonctionner indépendamment les uns des autres.
...et tu peux le faire dès la conception, la propriété GroupName figure dans la fenêtre de propriétés. Il te suffit donc de mettre un même nom pour chaque bouton d'un même groupe que tu définis.
Cordialement et bonne journée.
Merci pour ces premières réponses !
J'ai donc réussi à obtenir ce que je veux par les biais de Frames. Toutefois, j'ai dû pour cela reproduire "mon schéma" d’OptionButtons dans une Userbox (qu'il faut ouvrir via un OptionButton3 puis refermer pour effectuer ses choix en mode diaporama, comme le montre cette image :
Or, j'aimerais pouvoir me passer de cette Userbox et faire mes choix directement sur le diaporama.
J'ai donc essayé de mettre deux Frames directement sur ma diapositive, en plaçant deux OptionButtons dans chacune d'entre elles, comme sur cette image :
Mais pour le moment, avec cette méthode, mes choix ne sont toujours pas "séparés" : je suis toujours obligé de choisir entre mes options 1, 2, 3 et 4.
J'imagine que c'est un problème de code. Mais suis-je censé intégrer mon code relatif aux OptionButtons 1 et 2 dans mon "Private Sub Frame1_Click()" et le code pour les Optionbuttons 3 et 4 dans "Private Sub Frame2_Click()" ? Car ces codes fonctionnent eux-mêmes en cliquant sur des CommandButtons (vu qu'ils se nomment "Private Sub CommandButton1_Click()" et Private Sub "CommandButton2_Click()").
J'ai aussi tenté de passer par les GroupNames comme vous le suggérez, avec ce code :
Private Sub GroupNames()
ActiveSlide.OptionButton1.GroupName = "GP1"
ActiveSlide.OptionButton2.GroupName = "GP1"
ActiveSlide.OptionButton3.GroupName = "GP2"
ActiveSlide.OptionButton4.GroupName = "GP2"
End Sub
Toutefois, ça ne suffit pas à "séparer" mes choix : mes OptionButtons 1 et 2 ne sont toujours pas indépendants des OptionButtons 3 et 4. Je ne sais pas ce qu'il me manque.
En vous remerciant par avance !
Bonjour,
je vois pas comment tu met tes frames sur tes diapos ...
pour le group name .. tu n'as pas besoin de macro, sélectionne les options boutons un à un puis grâce au menu contextuel accède à leur propriété pour la modifier ..
Bonjour,
Sauf erreur, les frames pour lier les boutons ne fonctionnent que dans un userform.
Tu peux aussi grouper tes boutons.
Tu sélectionnes les boutons que tu veux lier, clic droit grouper.
Bon dimanche
Jeremy
Ah merci ! En effet ça fonctionne en passant par les propriétés : mes choix sont bien séparés !
Une dernière chose : j'aimerais, pour parfaire le tout, placer mes OptionButtons dans la diapo 2 et les CommandButton correspondants dans la diapo 3. J'image qu'il faut pour cela modifier la ligne en gras du code suivant :
Private Sub CommandButton1_Click()
If OptionButton1.Value = True Then
ActivePresentation.Slides(3).Shapes("[Image Réponse]").Visible = True
ActivePresentation.Slides(3).Shapes("[Image Réponse + Zoom]").Visible = False
ElseIf OptionButton2.Value = True Then
ActivePresentation.Slides(3).Shapes("[Image Réponse]").Visible = False
ActivePresentation.Slides(3).Shapes("[Image Réponse + Zoom]").Visible = True
End If
End Sub
Je pense démarrer ainsi : "If ActivePresentation.Slides(2)."... mais pour la suite, je n'arrive pas à trouver un code valide permettant de localiser mon OptionButton1 situé dans la diapo 2. Mon début de code n'est peut-être pas le bon ?
Essai If ActivePresentation.Slides(3).OptionButton1
J'ai essayé, mais ça ne fonctionne pas. Par ailleurs il faudrait un code comportant "Slides(2)" je pense, car mes OptionButtons doivent être dans la diapo 2.
Bonjour,
J'ai trouvé comment faire pour ma 2ème question. Voici un exemple de code permettant de masquer une forme dans une diapo 2, SI un bouton d'option est coché dans une diapo 1. Ceci en cliquant sur un bouton de commande situé en diapo 2 :
Private Sub CommandButton1_Click()
If ActivePresentation.Slides(1).Shapes("OptionButton1").OLEFormat.Object.Value = True Then
Me.Shapes("Rectangle 3").Visible = True
End If
End Sub
Merci à vous en tout cas, et si vous pouvez jeter un oeil au sujet que je viens de remonter dans le forum "Autres questions", je vous remercie encore plus.