Compter les check boxs d'une UserForm

  • Initiateur de la discussion Initiateur de la discussion Diez76
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Diez76

XLDnaute Nouveau
Bonjour,

J'ai réalisé une UserForm avec une trentaine de CheckBox et je souhaiterais afficher dans une TextBox le nombre de CheckBox cochées.

Pour ce faire, j'ai écris cette macro dans un module à part :
Sub toto()
i = 0
For Each ole1 In UserForm1.Controls
If Left(ole1.Name, 5) = "Check" Then
If ole1.Value = True Then
i = i + 1
End If
End If
Next
UserForm1.TextBox1.Value = i
End Sub

Ce bout de code "s'active" lorsqu'une checkbox change de statut.

Le pb de ce code, est qu'il m'oblige, pour chaque CheckBox d'écrire le code suivant :
Private Sub CheckBox1_Change()
Module1.toto
End Sub

Ce qui n'est pas du tout dynamique.

Voyez-vous une autre facon de faire? Sachant que je ne souhaite pas avoir de CommandButton du type "actualiser" pour compter les checBox.

Y-a-t-il un évèvement global de ma UserForm qui pourrait déclencher ma macro ?

Merci pour votre aide,

Cordialement,

Diez
 
Re : Compter les check boxs d'une UserForm

Bonjour,


Tu commences fort, Diez
2ième message sur ce forum, et t'en est déjà aux modules de classe 😉
Ça c'est de la progression fulgurante 😉
Un petit bémol 😉 : Diez fait avec ce qu’on lui a proposé​

Bonjour à tous,

Merci beaucoup pour vos réponses, qui marchent toutes ! Je pensais pouvoir faire sans module de classe mais visiblement non (naif que je suis...)

Après m’être perfectionné avec les Modules de Classes, grâce à Laetitia 😀, tototiti2008 😀, je suis redevenu naïf et revenu à : «moins de boutons, moins d’ennuis ». Je remplace systématiquement les Cases à cocher de la feuille par de « faux » contrôles (caractères spéciaux) et celles d’un UsF par des Listes (Box ou View).
En voici un exemple (pour ceux qui ont du mal avec les Modules de Classe et ceux qui sont pour les Moins de Contrôles).
 

Pièces jointes

Re : Compter les check boxs d'une UserForm

Re 🙂
Je crois qu'il faut ajouter un userform à la collection des Userforms pour pouvoir ensuite l'appeler par son nom...

pas super logique mais bon...
Effectivement, Marc, et à priori hasardeux 🙄...
Teste plusieurs fois
Code:
Sub test()VBA.UserForms.Add ("UserForm1")
MsgBox VBA.UserForms.Count
End Sub
Bizarre, le compteur monte 😛...
Mais après, pour y faire appel, seul les indices 0 ou 1 fonctionnent 😱 enfin, quand ils ont été gardés en mémoire, parce ce que je les ait pas toujours 🙄...
Et si tu en ajoutes plusieurs, va te retrouver dans les indices, l'appel par le nom ne semble pas fonctionner 😕
Bref, je garde mes "Parent", ça me parait plus efficace 😎
Fo_rum, très élégante solution 😉. Pas sûr que ça puisse remplacer toutes les occasions d'utiliser des modules de classe, mais pour celle-là, pas bête du tout 😛
Bonne suite 😎
 
Re : Compter les check boxs d'une UserForm

Re,

Oui, assez bizarre, mais si tu mets Add à chaque fois, même si la collection s'agrandit tu peux faire appel à ton userform par son nom sous forme de texte, donc Add dans la même instruction que ce que tu souhaites faire

Code:
Userforms.Add("Userform1").Show

sinon comme ça, ça passe chez moi

Code:
Sub test()
Dim UF As Object
Set UF = UserForms.Add("UserForm1")
UF.Show
End Sub

mais pas forcément la méthode la plus propre, plutôt un "truc"... 🙂
 
Re : Compter les check boxs d'une UserForm

re, tous 🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂
effectivement supprime qu'un parent

j'avais fais un truc comme cela pour quelqu'un pour supprimer les parents mais plus souvenir ???

dans module standard j' avais mis

Code:
Public es As MSForms.UserForm

code user a initialise ou activate.... mieux si plusieurs users

Code:
Set es = Me

code classe me rappel plus??? il faut que je cherches de que j'ai un moment😱😱
 
Re : Compter les check boxs d'une UserForm

re,tous🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂🙂
en fin de compte dans la class on ecrit comme cela

Code:
Public WithEvents cbx As MSForms.CheckBox
Private Sub cbx_Click()
es.Controls(cbx.Tag) = es.Controls(cbx.Tag) + IIf(cbx, 1, -1)
End Sub

ps trés bien le" truc" a l'ami forum🙂

JNP egalement le petit coup du IIf il fallait y penser🙂

toto🙂 passer par les collection trés interessant... j'utilise pour la créations dynamique des controles

avec tous "cela" on peut arriver a faire quelque chose
 

Pièces jointes

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
666
Retour