Limiter le nombre de checkbox cochés

Signaler
Messages postés
20
Date d'inscription
mardi 17 janvier 2012
Statut
Membre
Dernière intervention
31 mai 2013
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour à tous,

J'ai, dans un userform, 40 checkboxs.
J'aimerai pouvoir limiter le nombre de cases cochées à 5.
Et si plus de 5 cases cochées alors un msgbox apparait "vous n'avez que 5 choix possibles"

merci !

13 réponses

Messages postés
540
Date d'inscription
mardi 4 août 2009
Statut
Membre
Dernière intervention
1 février 2013
2
Salut sisco27,Uc et Acive,

bon je vais t'aider à suivre leur conversation:

disons que tu as 6 checkbox et tu veux qu'on n'en coche que 5

ucfoutu te dit:
Un simple compteur (l'incrémenter de 1 quand tu coches et de - 1 quand tu décoches)


donc tu commences par déclarer le compteur:
 Private compteur As Integer 'variable à portée générale


Toujours au click d'une checkbox ===>> si valeur compteur atteinte et si checked ===>> alors unchecked


dans l'évènement "CheckedChanged" tu mets:

rivate Sub CheckBox1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged, CheckBox4.CheckedChanged, CheckBox5.CheckedChanged, CheckBox6.CheckedChanged
        If DirectCast(sender, CheckBox).Checked Then
            compteur += 1  'quand tu coches,on incrémente le compteur
            If compteur = 6 Then
                MessageBox.Show("Pas plus de 6")
                DirectCast(sender, CheckBox).CheckState = False
            End If
        Else
            compteur -= 1 'quand tu décoches,on décrémente le compteur
        End If
    End Sub


à noter que dans la clause 'handles' j'ai mis CheckBox(1 ... 6).CheckedChanged pour éviter de répéter la même procédure .
tu vois c'était pas si dure que ça!!

Allez bonne continuation!!

Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...

Visual Basic .Net is the best
and vb6.0
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Bonjour,

et quelle est la difficulté ?
Un simple compteur (l'incrémenter de 1 quand tu coches et de - 1 quand tu décoches)
A chaque tentative de cochage : expression conditionnelle avec ce compteur


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
20
Date d'inscription
mardi 17 janvier 2012
Statut
Membre
Dernière intervention
31 mai 2013

Merci pour cet éclaircissement,
j'aimerais, néanmoins, pouvoir voir à quoi ressemble ce genre de code.
J'ai fait des recherches mais je ne trouve rien là dessus
Merci

Bonjour,
Ahhh, il n'y a rien comme un code bien compliqué comme ça, le matin avec mon premier café...

J'ajouterais:
au click : si cochée (valeur checkbox) ===>> compteur = compteur + 1
si décochée ==>>> compteur = compteur - 1

si compteur est supérieur à 4 ==>> toutes les autres checkbox.enabled = faux
Sinon
toutes les checkbox.enabled = vrai



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Mme pas nécessaire d'inhiber toutes les autres, acive ===>>

Toujours au click d'une checkbox ===>> si valeur compteur atteinte et si checked ===>> alors unchecked
Reste qu'il aura le chois, puisque sous VB.Net, entre :
répéter toutes ces instructions 40 fois, ou utiliser une procédure paramétrée, ou encore gérer en substitution de groupe de contrôles indexés
Qu'il commence (entraînement) avec une simple répétition, juste pour voir s'il sait "s'y mettre un peu".


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient

Bonjour UC,

Oui, les possibilités sont multiples, il peux également bloquer avec un msgbox avec un message du genre "vous ne pouvez pas cocher plus que 5"

Quand je parlais de les inhiber, je pensais à une possibilité sous .Net:
Faire une boucle (i) de 1 au nombre de checkboxs
Me.Controls("CheckBox" & i.ToString).Enabled = False
Sans les indexer, juste avec leur noms.



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Messages postés
20
Date d'inscription
mardi 17 janvier 2012
Statut
Membre
Dernière intervention
31 mai 2013

Merci à vous 2,

Etant novice, j'ai vraiment du mal à suivre votre conversation.
Inutile de vous fatiguer plus pour moi.

merci

Re:
Sisco:

Tu n'as pas compris, le fait que tu sois novice ne justifie pas que tu baisses les bras tout de suite (ça devrait être complètement le contraire!).

Si tu baisses les bras avec avec une question comme ça, si tu trouves compliqué et que tu trouves que tu n'arriveras pas, un conseil: abandonne la programmation.

Dans le cas contraire, dis toi bien que cette question sera la PLUS SIMPLE que tu trouveras tout au long de ton apprentissage.

Notre "conversation" avait pour but te faire réagir et démarrer un code fait par toi et bien sur que nous serons la pour te suivre et t'aider dans tes méthodes avec ton code.



Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Je voudrais quant à moi, sisco27, appeler tyon attention sur quelques points :
- si tu as mis des checkboxes dans ton appli, c'est forcément que tu sais en utiliser la propriété value (pour savoir si elles sont ou non cochées). Dans le cas contraire, elles ne te serviraient à rien !
- une checkbox répond à l'évènement click. Le code que tu utilises ailleurs (pour savoir si cochée ou non) est le même dans l'évènement click
- je t'ai parlé d'une variable (compteur) à portée générale. Ce que je souligne ici est important. Si tu ne sais pas encore ce qu'est la portée d'une variable, plonge vite dans ton aide (MSDN). C'est l'une des toutes premières choses à apprendre.
A partir du présent message et de ce que je t'ai dit plus haut : tu ne devrais avoir AUCUNE difficulté (sérieusement !)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
20
Date d'inscription
mardi 17 janvier 2012
Statut
Membre
Dernière intervention
31 mai 2013

merci à vous,
je vais me pencher dessus serieusement.
Je vous tiens au courant
Messages postés
20
Date d'inscription
mardi 17 janvier 2012
Statut
Membre
Dernière intervention
31 mai 2013

Voici le résultat :

For Each C In Me.Controls
If TypeName(C) = "CheckBox" Then
If C = True Then
nb = nb + 1
End If
End If
Next C
If nb > 5 Then
msgbox "Vous avez cochez plus de 5 défauts" & Chr(13) & "Veuillez modifier votre choix" & Chr(13) & Chr(13) & "Si nécessaire, complétez dans la case 'COMMENTAIRES'"
Exit Sub
Call DEFAUTS
End If




merci à vous
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
Je pense que tu veux là plaisanter :
Tu ne trouveras nulle part ce "genre de code" (comme tu dis), car il est d'une telle simplicité que personne n'en "fera un plat" !
Mécanisme (je refuse d'écrire le code lui-même) donc , avec compteur = variable integer de portée générale :
au départ : toutes les checkboxes sont décochées.
Mécanisme :
au click : si cochée (valeur checkbox) ===>> compteur = compteur + 1
si décochée ==>>> compteur = compteur - 1
Si tu trouves cela dur, ma foi ... ===>> j'ai peur !




____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
240
solution assez hasardeuse, qui ne marchera que su aucune autre checkbox que celles-ci sur ton form et qui te jouera un tour le jour ou tu penseras utile d'en ajouter une autre, non considérée par ce groupe.
nous t'avons pourtant parlé d'autres méthodes


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient