Limiter le nombre de checkbox cochés

cs_sisco27 Messages postés 20 Date d'inscription mardi 17 janvier 2012 Statut Membre Dernière intervention 31 mai 2013 - 17 janv. 2012 à 09:41
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 23 janv. 2012 à 08:32
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

NSUADI Messages postés 540 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 1 février 2013 2
17 janv. 2012 à 17:05
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
1
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
17 janv. 2012 à 10:13
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
0
cs_sisco27 Messages postés 20 Date d'inscription mardi 17 janvier 2012 Statut Membre Dernière intervention 31 mai 2013
17 janv. 2012 à 12:08
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
0
Utilisateur anonyme
17 janv. 2012 à 12:44
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
17 janv. 2012 à 12:53
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
0
Utilisateur anonyme
17 janv. 2012 à 13:22
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
0
cs_sisco27 Messages postés 20 Date d'inscription mardi 17 janvier 2012 Statut Membre Dernière intervention 31 mai 2013
17 janv. 2012 à 13:45
Merci à vous 2,

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

merci
0
Utilisateur anonyme
17 janv. 2012 à 14:06
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
17 janv. 2012 à 16:22
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
0
cs_sisco27 Messages postés 20 Date d'inscription mardi 17 janvier 2012 Statut Membre Dernière intervention 31 mai 2013
18 janv. 2012 à 07:51
merci à vous,
je vais me pencher dessus serieusement.
Je vous tiens au courant
0
cs_sisco27 Messages postés 20 Date d'inscription mardi 17 janvier 2012 Statut Membre Dernière intervention 31 mai 2013
23 janv. 2012 à 08:26
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
17 janv. 2012 à 12:28
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
-1
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 212
23 janv. 2012 à 08:32
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
-1
Rejoignez-nous