Inclure plusieurs CheckBox Activex sur une même ma

Fermé
lerakabycyk Messages postés 2 Date d'inscription mercredi 14 février 2018 Statut Membre Dernière intervention 14 février 2018 - 14 févr. 2018 à 20:12
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 - 15 févr. 2018 à 07:46
Bonjour tout le monde,

J'ai cherché, et encore cherché, mais je ne trouve pas de solutions à mon problème. Je vais vous l'avouer, je débute en VBA, mais j'ai tout de même réussi à réaliser une macro qui me permet de faire ce que je désire. J'utilise la version 2013 de Word pour faire ce code.

C'est assez simple.

Si A est actif, on peut juste selectionner C et D
Si B est actif, on peut juste selectionner E et F

Si ni A, ni B sont selectionner, on ne peut pas selectionner ni C, ni D, ni E, ni F
Si A est selectionné , la valeur de B est False
Si B est selectionné, la valeur de A est False

Si A est actif, le bookmark "A" sera visible
Si B est actif, le bookmark "B" sera visible

et ainsi de suite...

Le problème ici, c'est que j'ai énormément de macro pour réaliser cela. On m'a conseillé les boucles, mais j'ai beau lire des articles à ce sujet, je ne réussi pas à saisir comment les utiliser et j'aimerais que mes cases à cocher ActiveX puissent être tous dans la même macro. J'aimerais connaître votre avis pour savoir comment je pourrais raccourcir le code pour que ce soit beaucoup plus simple si je dois ajouter des bookmarks ultérieurement.

Voici le code:

Private Sub B_Click()
If B.Value = True Then
A.Value = False
C.Enabled = False
D.Enabled = False
E.Enabled = True
F.Enabled = True
Bookmarks("B").Range.Font.Hidden = False
End If

If B.Value = False Then
C.Enabled = False
D.Enabled = False
E.Enabled = False
F.Enabled = False
Bookmarks("B").Range.Font.Hidden = True
End If

End Sub


Private Sub A_Click()
If A.Value = True Then
B.Value = False
C.Enabled = True
D.Enabled = True
E.Enabled = False
F.Enabled = False
Bookmarks("A").Range.Font.Hidden = False
End If

If A.Value = False Then
C.Enabled = False
D.Enabled = False
E.Enabled = False
F.Enabled = False
Bookmarks("A").Range.Font.Hidden = True
End If

End Sub

Private Sub C_Click()
If C.Value = True Then
Bookmarks("C").Range.Font.Hidden = False
End If

If C.Value = False Then
Bookmarks("C").Range.Font.Hidden = True
End If

End Sub

Private Sub D_Click()
If D.Value = True Then
Bookmarks("D").Range.Font.Hidden = False
End If

If D.Value = False Then
Bookmarks("D").Range.Font.Hidden = True
End If

End Sub

Private Sub E_Click()
If E.Value = True Then
Bookmarks("E").Range.Font.Hidden = False
End If

If E.Value = False Then
Bookmarks("E").Range.Font.Hidden = True
End If

End Sub

Private Sub F_Click()
If F.Value = True Then
Bookmarks("F").Range.Font.Hidden = False
End If

If F.Value = False Then
Bookmarks("F").Range.Font.Hidden = True
End If

End Sub


Il est extrêmement long. Je cherche comment le réduire, mais je ne trouve pas. Si jamais quelqu'un a l'amabilité de m'aider, ce sera extrêmement apprécié.
Merci!

2 réponses

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
14 févr. 2018 à 20:26
Bonjour

Place 2 groupbox sur ta form.
A rend enabled le premier, B le second.
Dans chaque groupBox place des radiobuttons, c’est un peu comme des checkbox sauf qu’un seul est actif dans un même conteneur (d'où les groupbox)
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
14 févr. 2018 à 20:29
PS en postant ton code, tu as voulu utliser la coloration, cependant tu n’as pas précisé qu’il s’agit d’un basic.
Du coup, ça fait un bloc gris tout moche.
Voir ici comment mieux utiliser la coloration
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
0
lerakabycyk Messages postés 2 Date d'inscription mercredi 14 février 2018 Statut Membre Dernière intervention 14 février 2018
14 févr. 2018 à 22:00
Merci du conseil! Cela va diminuer mon code et je ne savais pas pour les couleurs. J'utiliserai les infos que tu m'as donné pour la prochaine fois. Par contre, je tente également de diminuer mon code d'une autre façon. Lorsqu'on appuie sur la checkbox, du texte apparait en fonction de la checkbox. Sur mon autre code, tout fonctionne, mais j'ai tenté quelque chose pour raccourcir le code. Comme je l'ai dit, je débute en VBA.

Private Sub Document()

Dim i As String
i = "A,B,C,D,E,F"

If i = True Then
Bookmarks("i").Range.Font.Hidden = True
End If

If i = False Then
Bookmarks("i").Range.Font.Hidden = False
End If

End Sub


C'est ma tentative et elle ne fonctionne. J'ai tenté d'attribuer une variable au checkbox (leurs noms sont A,B...) pour que si Value = TRUE pour une checkbox qui porte le même nom que la bookmark, cette dernière s'affiche. La structure ne doit pas être adéquate et je ne sais pas si cela à un lien, mais sur mon autre code, toute mes macros ont une déclaration click.
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 931
15 févr. 2018 à 07:46
Là je ne suis pas capable de te dire, VBA j’en fais très peu.
Pour ce type de question, il faut que j’essaye, or je ne suis pas au bureau cette semaine. Je n’ai pas accès à word ou excel.
0