[Visual Basic - Word 2007] test Checkbox

Fermé
11laurent11 - 29 déc. 2009 à 14:09
 11laurent11 - 29 déc. 2009 à 17:04
Bonjour,

Je n'y connais pas grand chose en VBA et j'aimerais faire un truc assez simple sous WORD 2007.

Dans mon document je vais créer plusieurs blocs de textes qui devront être lus et validés par différents lecteurs.
J'ai donc inséré une checkbox avec les trois états activés (coché, grisé, pas coché). Tout en haut de mon document je voudrais afficher des cases de couleurs qui correspondent à l'état de la checkbox. J'aurais par exemple une case verte si la checkbox a été cochée, orange si la checkbox est grisée et rouge si la checkbox n'a pas été cochée.

J'ai créé une checkbox ActiveX appelée CheckBox1 avec TripleState mis sur true
J'ai créé un label ActiveX appelé Label1

J'ai essayé le script suivant:

Sub CheckBox1_click()
Select Case CheckBox1.Value
Case vbUnchecked
Label1.BackColor = vbRed
Case vbChecked
Label1.Caption = vbGreen
Case vbGrayed
Label1.Caption = vbYellow
End Select

End Sub

Je lance le script (avec Run) et le label se met en rouge car la checkbox n'est pas cochée par défaut. Par contre si j'appuie sur la checkbox pour la cocher, la couleur du label ne change pas. C'est un peu comme si le script ne fonctionnait qu'une fois et qu'il n'écoutait plus les changements après avoir tourné une première fois.

Est-ce que quelqu'un sait ce que je dois faire? Je pense que c'est assez simple mais vu que je ne connais pas bien VBA, je peux encore chercher longtemps.

Merci
Laurent
A voir également:

4 réponses

moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
29 déc. 2009 à 14:23
bonjour
essai ca:

if CheckBox1.Value = vbUnchecked then Label1.BackColor = vbRed
if CheckBox1.Value= vbChecked then Label1.Caption = vbGreen
if CheckBox1.Value = vbGrayed then Label1.Caption = vbYellow
0
Merci moiced59. J'ai le même problème, le script s'execute une fois et modifie la couleur du label mais ensuite quand je clique à nouveau sur la checkbox, la couleur du label ne change plus. C'est comme si le script n'était plus actif après sa première execution :-(
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
29 déc. 2009 à 14:40
peut tu mettre ton fichier en ligne via www.cijoint.fr
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
29 déc. 2009 à 15:39
je vien de regarder a ton probleme le mieux serai de creer 3 case a cocher et qd tu clic sur l'une des 3 les 2 autre sont a faux et la tienne devien vrai et execute ton code
0
Merci, j'ai partiellement résolu le problème, le problème venait de la valeur attribuée à Checkbox1.Value

J'utilise le script suivant:

Sub CheckBox1_Click()
Select Case CheckBox1.Value
Case False
CheckBox1.Caption = "Unchecked"
Label1.Caption = "uncheck"
Case True
CheckBox1.Caption = "Checked"
Label1.Caption = "check"
Case vbGrayed
CheckBox1.Caption = "Disabled"
Label1.Caption = "grey"

End Select

End Sub

et je constate que l'état checked et unchecked fonctionnent parfaitement mais la valeur de CheckBox1.Value en cas de check grisé est égale à False tout comme le unchecked donc je ne sais pas différencier le status grey des deux autres. Est-ce qu'il existe une autre méthode pour tester l'état du bouton?
0
moiced59 Messages postés 1145 Date d'inscription samedi 15 novembre 2008 Statut Membre Dernière intervention 18 août 2014 60
29 déc. 2009 à 16:37
Je ne sais pas moi jaurais fais avec 3 check
0
Merci!
je n'ai malheureusement pas beaucoup de place, 4 personnes doivent valider le texte donc ça fait 12 checkbox à utiliser par texte à valider. Je dois aussi éviter que plusieurs checks soient cochés pour la meme personne. Je vais peut être essayer avec un bouton radio.

J'ai beau chercher, je ne trouve pas comment je peux repecher la valeur grisée du checkbox, j'ai repris des exemples sur le site de Microsoft mais le .Value me retourne toujours false pour la case grisée.
0