Cocher/décocher une checkbox [Résolu]

Signaler
Messages postés
23
Date d'inscription
mercredi 10 mai 2006
Statut
Membre
Dernière intervention
25 juin 2006
-
Messages postés
23
Date d'inscription
mercredi 10 mai 2006
Statut
Membre
Dernière intervention
25 juin 2006
-
Bonjour,

J'aiemrai cocher et décocher 3 checkbox (qui représente jour, mois, année) suivant le graphique que je veux, le probleme, c'est que une fois une checkbox cocher, je ne peux pas en cocher une 2e et décocher la precedente


j'ai essayer le code suivant:


Private Sub Check1_Click()

Check1.Value = Checked
Check2.Value = Unchecked
Check3.Value = Unchecked
End Sub

Private Sub Check2_Click()

Check1.Value = Unchecked
Check2.Value = Checked
Check3.Value = Unchecked
End Sub


Private Sub Check3_Click()

Check1.Value = Unchecked
Check2.Value = Unchecked
Check3.Value = Checked
End Sub

J'ai le message d'erreur

erreur d'execution '28'
espace de pile insuffisant

Comment faire pour cocher une checkbox 1 par un click puis cocher une autre checkbox et désactiver la 1ere ?

merci

5 réponses

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
96
Normal : lorsque tu check le checkbox1 dans ton événement click, cela déclenche de nouveau l'événement click, et ainsi de suite !

La solution ?
Soit passer par un optionbutton à la place des checkboxex, soit utiliser l'astuce suivante :

Private Sub Check1_Click()
Static bCheck As Boolean

if not bCheck Then
    bCheck = true
    Check1.Value = vbChecked
    Check2.Value = vbUnchecked
    Check3.Value = vbUnchecked
    bCheck = false
end if

End Sub

_
Avant de poster dans le forum,
prière d'aller lire ceci :
http://www.codes-sources.com/reglement.aspx
<s></s>
Messages postés
180
Date d'inscription
jeudi 21 août 2003
Statut
Membre
Dernière intervention
26 novembre 2007
2
Bonjour,

Je te conseille plutôt d'utiliser un OptionButton qu'un ChekBox, sinon comme l'a indiqué DARKSIDIOUS tu peux utiliser une variable statique ou bien une variable globale pour ne pas entrer dans la boucle infinie.

Bonne programmation.

Cordialement medelidrissi

<hr />En Informatique, rien n'est impossible. mais, ce n'est pas toujours évident.
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
47
Salut,

en remplacant tes CheckBox par des radio Bouton

@+, Julien
Pensez: Moteur de Recherche, Réponse Acceptée
Messages postés
228
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
4 janvier 2008
1
Salut

en fait ton erreur vient du fait qu'à chaque fois que tu attribue une nouvelle valeur aux autres checkbox cela déclenche l'événement clique des autres checkbox donc rechange une nouvelle fois les valeurs de toutes les checkox qui redéclenche l'évenement clique... tu tournes en rond... d'où l'erreur 28.

Si tu veux continuer avec ton code il y a encore plus simple  : il suffit de faire un test à chaque fois.
essaie de faire ceci :

Private Sub Check1_Click()
If Check1.Value = 1 Then
    Check2.Value = 0
    Check3.Value = 0
End If
End Sub

Private Sub Check2_Click()
If Check2.Value = 1 Then
    Check1.Value = 0
    Check3.Value = 0
End If
End Sub

Private Sub Check3_Click()
If Check3.Value = 1 Then
    Check1.Value = 0
    Check2.Value = 0
End If
End Sub

Deluka.
Messages postés
23
Date d'inscription
mercredi 10 mai 2006
Statut
Membre
Dernière intervention
25 juin 2006

merci les gars, en meme pas 10min j'ai reussi a faire ce que je voulai, ca marche impec,

merci bcp,

PS: le sujet et mal placer, si un modo pourrai eventuellement le deplacer dans VB6/GENERAL .. merci,