Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Gestion du sur checkbox

11 réponses
Avatar
ThierryP
Bonjour,

Je suis perplexe..... J'ai un checkbox sur une feuille; si je le coche, je =
fais quelque chose, si je le d=E9coche je fais autre chose. Voil=E0 ce que =
=E7a donne selon moi :

Private Sub BLab_Click()
Application.EnableEvents =3D False
If BLab Then
BLab =3D False
Union(Range("B_Lab"), Range("B_Lab_Cal"), Range("B_Lab_Cell")).Font.Col=
orIndex =3D 2
Else
BLab =3D True
Union(Range("B_Lab"), Range("B_Lab_Cal"), Range("B_Lab_Cell")).Font.Col=
orIndex =3D xlAutomatic
End If
Application.EnableEvents =3D True
End Sub

Or, ma proc=E9dure se fiche =E9perdument de mon "enableevents=3Dfalse" et b=
oucle all=E8grement 7 ou 8 fois =E0 chaque changement d'=E9tat (BLab=3D Fal=
se ou True). D'ailleurs, je ne comprends m=EAme pas pourquoi elle finit par=
s'arr=EAter toute seule..... La fatigue ??????

Qu'est-ce qui ne va pas, =E0 part moi ?

Merci d'avance

ThierryP

10 réponses

1 2
Avatar
ThierryP
Ouuuppps, Gestion du CLICK sur checkbox bien sûr !!


Le mercredi 20 février 2013 16:40:34 UTC+1, ThierryP a écrit :
Bonjour,



Je suis perplexe..... J'ai un checkbox sur une feuille; si je le coche, j e fais quelque chose, si je le décoche je fais autre chose. Voilà ce qu e ça donne selon moi :



Private Sub BLab_Click()

Application.EnableEvents = False

If BLab Then

BLab = False

Union(Range("B_Lab"), Range("B_Lab_Cal"), Range("B_Lab_Cell")).Font.C olorIndex = 2

Else

BLab = True

Union(Range("B_Lab"), Range("B_Lab_Cal"), Range("B_Lab_Cell")).Font.C olorIndex = xlAutomatic

End If

Application.EnableEvents = True

End Sub



Or, ma procédure se fiche éperdument de mon "enableeventsúlse" et boucle allègrement 7 ou 8 fois à chaque changement d'état (BLab= F alse ou True). D'ailleurs, je ne comprends même pas pourquoi elle finit p ar s'arrêter toute seule..... La fatigue ??????



Qu'est-ce qui ne va pas, à part moi ?



Merci d'avance



ThierryP
Avatar
isabelle
bonjour Thierry,

essai en ajoutant le nom de la feuille

Sheets("Feuil1").CheckBox1

isabelle

Le 2013-02-20 10:48, ThierryP a écrit :
Ouuuppps, Gestion du CLICK sur checkbox bien sûr !!
Avatar
ThierryP
Bonsoir Isabelle,

Ben.... pas concluant ! La seule différence visible, c'est que la case re ste obstinément à False.

Mais pourquoi le fait de rajouter le nom de feuille change-t-il le comporte ment de la case ??

ThierryP

Le mercredi 20 février 2013 17:21:39 UTC+1, isabelle a écrit :
bonjour Thierry,



essai en ajoutant le nom de la feuille



Sheets("Feuil1").CheckBox1



isabelle



Le 2013-02-20 10:48, ThierryP a écrit :

> Ouuuppps, Gestion du CLICK sur checkbox bien sûr !!
Avatar
isabelle
aucun,

je ne comprend pas pourquoi tu change la valeur du CheckBox dans la macro?

isabelle

Le 2013-02-20 11:43, ThierryP a écrit :
Bonsoir Isabelle,

Ben.... pas concluant ! La seule différence visible, c'est que la case reste obstinément à False.

Mais pourquoi le fait de rajouter le nom de feuille change-t-il le comportement de la case ??

ThierryP

Le mercredi 20 février 2013 17:21:39 UTC+1, isabelle a écrit :
bonjour Thierry,



essai en ajoutant le nom de la feuille



Sheets("Feuil1").CheckBox1



isabelle



Le 2013-02-20 10:48, ThierryP a écrit :

Ouuuppps, Gestion du CLICK sur checkbox bien sûr !!





Avatar
MichD
Bonjour,

Essaie comme ceci :
'----------------------------------
Private Sub BLab_MouseDown(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
BLab = Not BLab
If BLab = False Then
Union(Range("B_Lab"), Range("B_Lab_Cal"),
Range("B_Lab_Cell")).Font.ColorIndex = 2
Else
Union(Range("B_Lab"), Range("B_Lab_Cal"),
Range("B_Lab_Cell")).Font.ColorIndex = xlAutomatic
End If
BLab.Select
End Sub
'----------------------------------

A ) La commande "Application.EnableEvents" n'a aucun impact sur
les événements des boutons de la barre d'outils "Contrôle". Elle
ne contrôle que les événements dans l'application Excel (événements
de la feuille et du Thisworkbook.

B ) Quand tu cliques sur le checkbox, cet événement modifie la valeur
du checkbox. Si tu modifies par le code la valeur du Checkbox, ceci
appelle la commande de l'événement "Clic"

C ) Il s'agit de choisir et d'adapter d'autres événements en fonction
du but recherché.

D ) Supprime l'événement Clic du module.

MichD
---------------------------------------------------------------
Avatar
ThierryP
Bonjour,

En fait, je voulais :
- en cochant la case, faire apparaitre un texte qui demande à l'utilisate ur des infos complémentaires
- en décochant, faire disparaître ce texte.

Visiblement, je n'ai pas choisi la bonne solution !!!

Merci



Le mercredi 20 février 2013 18:01:36 UTC+1, isabelle a écrit :
aucun,



je ne comprend pas pourquoi tu change la valeur du CheckBox dans la macro ?



isabelle



Le 2013-02-20 11:43, ThierryP a écrit :

> Bonsoir Isabelle,

>

> Ben.... pas concluant ! La seule différence visible, c'est que la cas e reste obstinément à False.

>

> Mais pourquoi le fait de rajouter le nom de feuille change-t-il le comp ortement de la case ??

>

> ThierryP

>

> Le mercredi 20 février 2013 17:21:39 UTC+1, isabelle a écrit :

>> bonjour Thierry,

>>

>>

>>

>> essai en ajoutant le nom de la feuille

>>

>>

>>

>> Sheets("Feuil1").CheckBox1

>>

>>

>>

>> isabelle

>>

>>

>>

>> Le 2013-02-20 10:48, ThierryP a écrit :

>>

>>> Ouuuppps, Gestion du CLICK sur checkbox bien sûr !!

>
Avatar
ThierryP
Bonjour Denis,

Comme je l'ai dit à Isabelle, je n'ai pas choisi la bonne solution !! Je voulais quelque chose de visuel pour l'impression, mais je vais utiliser un bouton bascule en changeant le caption et ça devrait le faire.

J'ai testé ta proposition, mais elle a également un fonctionnement erra tique : je dois cliquer plusieurs fois sur la case pour voir un changement, donc c'était vraiment une mauvaise idée de ma part !!

Merci à toi également

ThierryP

Le mercredi 20 février 2013 20:34:07 UTC+1, MichD a écrit :
Bonjour,



Essaie comme ceci :

'----------------------------------

Private Sub BLab_MouseDown(ByVal Button As Integer, _

ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

BLab = Not BLab

If BLab = False Then

Union(Range("B_Lab"), Range("B_Lab_Cal"),

Range("B_Lab_Cell")).Font.ColorIndex = 2

Else

Union(Range("B_Lab"), Range("B_Lab_Cal"),

Range("B_Lab_Cell")).Font.ColorIndex = xlAutomatic

End If

BLab.Select

End Sub

'----------------------------------



A ) La commande "Application.EnableEvents" n'a aucun impact sur

les événements des boutons de la barre d'outils "Contrôle". El le

ne contrôle que les événements dans l'application Excel (év énements

de la feuille et du Thisworkbook.



B ) Quand tu cliques sur le checkbox, cet événement modifie la valeur

du checkbox. Si tu modifies par le code la valeur du Checkbox, ceci

appelle la commande de l'événement "Clic"



C ) Il s'agit de choisir et d'adapter d'autres événements en fonction

du but recherché.



D ) Supprime l'événement Clic du module.



MichD

---------------------------------------------------------------
Avatar
MichD
Ceci fonctionne très bien :

Private Sub CheckBox1_MouseUp(ByVal Button As Integer, _
ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

If CheckBox1 = False Then
Union(Range("B_Lab"), Range("B_Lab_Cal"),
Range("B_Lab_Cell")).Font.ColorIndex = 2
Exit Sub
Else
Union(Range("B_Lab"), Range("B_Lab_Cal"),
Range("B_Lab_Cell")).Font.ColorIndex = xlAutomatic
Exit Sub
End If
End Sub

MichD
---------------------------------------------------------------
Avatar
MichD
L'autre procédure soumise fonctionne aussi,
sauf pour une raison que j'ignore ;-) cette ligne
n'aurait pas dû faire partie de la macro:


BLab = Not BLab


MichD
---------------------------------------------------------------
Avatar
ThierryP
Magnifique !!

Pour un utilisateur lambda, la case à cocher est beaucoup plus "parlante" que le togglebutton !

Merci :-)))

ThierryP

Le jeudi 21 février 2013 13:17:04 UTC+1, MichD a écrit :
Ceci fonctionne très bien :



Private Sub CheckBox1_MouseUp(ByVal Button As Integer, _

ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)



If CheckBox1 = False Then

Union(Range("B_Lab"), Range("B_Lab_Cal"),

Range("B_Lab_Cell")).Font.ColorIndex = 2

Exit Sub

Else

Union(Range("B_Lab"), Range("B_Lab_Cal"),

Range("B_Lab_Cell")).Font.ColorIndex = xlAutomatic

Exit Sub

End If

End Sub



MichD

---------------------------------------------------------------
1 2