Combien de checkbox sont true ?

carlos

XLDnaute Impliqué
Supporter XLD
Bonsoir le forum

J'aimerai savoir le nombre de checkbox = true sur le userform Options .
Voir piece jointe
Private Sub CommandButton1_Click()
Dim Options As Form
Set Options = Me
Dim ctl As Control
nb = 0
For Each ctl In Options.Controls
If ctl.Value = True Then
nb = 1 + nb
End If
Next ctl
MsgBox nb
End Sub

merci

Merci [file name=ForEachControlCombienDeTrue.zip size=7692]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/ForEachControlCombienDeTrue.zip[/file]
 

Pièces jointes

  • ForEachControlCombienDeTrue.zip
    7.5 KB · Affichages: 8

carlos

XLDnaute Impliqué
Supporter XLD
Bonsoir Robert , Jmps , le forum

Merci robert pour ta proposition mais j'aurais aimé avoir un truc du genre : For each car je ne sais pas à l'avance combien de checkbox j'aurais.

de plus j'ai aussi envie de m'attaquer au controles en groupe .ce qui pourrais me servir pour appliquer une action à tous les objets d'un groupe sans avoir forcement à connaitre leur nombre .


Merci Carlos
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Carlos, mes amis José et Robert, le Forum

Voici une boucle for Each pour ton type de demande :

Private Sub CommandButton1_Click()
Dim CTRL As Control
Dim nb As Byte

   
For Each CTRL In Me.Controls
       
If TypeOf CTRL Is MSForms.CheckBox Then
           
If CTRL.Value = True Then
                nb = 1 + nb
           
End If
       
End If
   
Next
MsgBox nb
End Sub


Ne pas oublier aussi la Propriété 'Tag' qui peut rendre service aussi (merci Ti_) exploitable, par exemple de cette manière :

Private Sub CommandButton1_Click()
Dim CTRL As Control
Dim nb As Byte

   
For Each CTRL In Me.Controls
       
If TypeOf CTRL Is MSForms.CheckBox Then
           
           
If CTRL.Tag = 'TonTag' Then
               
If CTRL.Value = True Then
                    nb = 1 + nb
               
End If
           
End If
       
End If
   
Next
MsgBox nb
End Sub


Bonne Soirée
[ol]@+Thierry[/ol]

[Main en Vrac Provisoirement] ;)
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonsoir le fil, bonsoir le forum,

Argh ! Thierry même Man Show (jeu de mot à deux balles relatif à sa main bionique) m'a devancé sur ce coup ! Pas étonnant j'oublie toujours ce satané TypeOf et il me faut lancer une recherche dans le forum. Là je trouve et sur qui je tombe ? L'extra-terrestre de service barbatruquestre... Thierry. Pas moyen de s'en défaire de c'gars là. C'est une plaie (une plaidoirie pour son talent en fait..).
Oui je sais, vu que je n'ai rien d'autre à ajouter j'aurais pu fermer ma gueule mais... Juste un petit merci à Thierry en espérant que ses problèmes paluchesques soit résolus.
 

carlos

XLDnaute Impliqué
Supporter XLD
Bonsoir Thierry,Robert,Jmps?le forum

La premiere formule marche impeccable .Merci Thierry et je n'avais rien trouvé sur ce forum.

Cependant la seconde proposition ne fonctionne pas ?
C'est quoi le tag , qu'es ce qu'il peut apporter de plus sur ce sujet.?

Merci Beaucoup

Cordialement Carlos

Ps , C'est vrai qu'il est partout ce Thierry
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonsoir Robert, Carlos, José, le Forum

Merci des gentils commentaires de Robert, j'essaie de faire de mon mieux, mais en ce moment je suis loin d'être opérationnel pour être partout. En ce moment j'évite surtout les fils à complications à 'tiroirs' d'où l'on ne se sort plus !

Pour le 'Tag' c'est simple, c'est dans le fenêtre propriété de chaque contrôle ActiveX d'un UserForm. C'est paramétrable en mode Design une fois que l'on a séléctionné le Contrôle (ou les Contrôles si l'on fait une multi-sélection avec la touche CTRL enfoncée) en ouvrant le fenêtre Propriété (F4)... il suffit de chercher la propriété 'Tag' et d'y saisir la clef 'TonTag' comme dans mon exemple.

De là tu peux mettre un Tag commun aux contrôles que tu souhaites différencier...

Cette astuce m'a été dévoilée par un autre Extra Terrestre lors d'une mission inter-galactique... 'Magic Ti_' pour ne pas le nommer.

Bonne nuit
[ol]@+Thierry[/ol]
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Carlos, Robert, José, le Forum


Non non le 'ControlTipText' n'a strictement rien à voir avec le 'Tag'.

Le fait de 'Tager' un contrôle ne fera pas comme sur certains murs, ce sera invisible !

C'est uniquement récupérable depuis un code VBA comme l'exemple que je t'ai fourni ou comme un autre exemple :

Private Sub CommandButton1_Click()
Dim CTRL As Control
Dim CtrlStatus As String
Dim nb As Byte

   
For Each CTRL In Me.Controls
           
If CTRL.Tag = 'TonTag' Then
                CtrlStatus = CtrlStatus & CTRL.Object & vbCrLf
                    nb = 1 + nb
           
End If
   
Next
MsgBox nb & vbCrLf & CtrlStatus
End Sub


Bonne journée et bon appétit
[ol]@+Thierry[/ol]
 

carlos

XLDnaute Impliqué
Supporter XLD
bonjour _Thierry,Robert,Jmps

je crois comprendre ...
Ca permet d'attribuer à tous les controles qui ont la propriété Tag = 'TonTag' de se sentir concerné par un événement du genre :

If CTRL.Tag = 'TonTag' Then CTRL.visible = false

du coup tous ces controles seront cachés.

Es ce cela ?
Merci Carlos :woohoo:
 

Discussions similaires

Statistiques des forums

Discussions
312 755
Messages
2 091 725
Membres
105 058
dernier inscrit
axcelle