Menu

Inclure plusieurs CheckBox Activex sur une même ma

lerakabycyk 2 Messages postés mercredi 14 février 2018Date d'inscription 14 février 2018 Dernière intervention - 14 févr. 2018 à 20:12 - Dernière réponse : Whismeril 11033 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 16 février 2018 Dernière intervention
- 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!
Afficher la suite 

4 réponses

Répondre au sujet
Whismeril 11033 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 16 février 2018 Dernière intervention - 14 févr. 2018 à 20:26
0
Utile
1
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)
Whismeril 11033 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 16 février 2018 Dernière intervention - 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
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code
Commenter la réponse de Whismeril
lerakabycyk 2 Messages postés mercredi 14 février 2018Date d'inscription 14 février 2018 Dernière intervention - 14 févr. 2018 à 22:00
0
Utile
1
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.
Whismeril 11033 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 16 février 2018 Dernière intervention - 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.
Commenter la réponse de lerakabycyk