Gestion du sur checkbox

Le
ThierryP
Bonjour,

Je suis perplexe.. J'ai un checkbox sur une feuille; si je le coche, je =
fais quelque chose, si je le décoche je fais autre chose. Voilà ce que =
ç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.Col=
orIndex = 2
Else
BLab = True
Union(Range("B_Lab"), Range("B_Lab_Cal"), Range("B_Lab_Cell")).Font.Col=
orIndex = xlAutomatic
End If
Application.EnableEvents = True
End Sub

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

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

Merci d'avance

ThierryP
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
ThierryP
Le #25236062
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
isabelle
Le #25236112
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 !!
ThierryP
Le #25236142
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 !!
isabelle
Le #25236252
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 !!





MichD
Le #25236722
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
---------------------------------------------------------------
ThierryP
Le #25237922
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 !!

>
ThierryP
Le #25237912
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

---------------------------------------------------------------
MichD
Le #25238522
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
---------------------------------------------------------------
MichD
Le #25238582
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
---------------------------------------------------------------
ThierryP
Le #25238752
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

---------------------------------------------------------------
Publicité
Poster une réponse
Anonyme