XL 2019 Afficher les noms des checkbox sélectionné dans une listbox

Tipeu

XLDnaute Nouveau
Bonjour a tous,

Je suis a la recherche d'une solution pour générer le nom de mes checkbox sélectionnés dans une liste box visible a coté en direct.
Photo ci dessous : pour la démonstration j'ai cliqué sur ma checkbox nommé 1A j'aurais voulu que son nom apparaisse dans la listbox et si possible d'y rajouter un complément de phrase.
1595511586118.png

Merci de votre aide, un jeune padawan qui a envie d'apprendre mais bloque un peu tout seul malgrés toutes les aides dispo sur le web.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @Tipeu, le Forum

Comme je vois qu'il y a des références à des biblithèques AutoCad, y-a t'il une raison pour que des CheckBoxes soient en "TripleState" ?

La méthode conventionnelle serait (en TripleState False) serait :
VB:
Private Sub CommandButton1_Click()
Dim CTRL As Control

For Each CTRL In Me.Controls
    If TypeName(CTRL) = "CheckBox" Then
        If CTRL.Value = True Then
            Me.ListingTrou.AddItem CTRL.Caption
        End If
    End If
Next CTRL
End Sub

Mais paramétrés en TripleState = True elles ne retournent rien...

Bonne journée
@+Thierry
 

Tipeu

XLDnaute Nouveau
Bonjour @Tipeu, le Forum

Comme je vois qu'il y a des références à des biblithèques AutoCad, y-a t'il une raison pour que des CheckBoxes soient en "TripleState" ?

La méthode conventionnelle serait (en TripleState False) serait :
VB:
Private Sub CommandButton1_Click()
Dim CTRL As Control

For Each CTRL In Me.Controls
    If TypeName(CTRL) = "CheckBox" Then
        If CTRL.Value = True Then
            Me.ListingTrou.AddItem CTRL.Caption
        End If
    End If
Next CTRL
End Sub

Mais paramétrés en TripleState = True elles ne retournent rien...

Bonne journée
@+Thierry

Bonjour @_Thierry,

Merci de votre réponse.

Actuellement le TripleState, me permet d'avoir deux états différents pour autocad, en effet par la suite je veux que chaque case cocher me renvoie une position défini sur AutoCad pour le traçage d'un cercle, mais je veux aussi pouvoir gérer la mise en place d'un second cercle associé en cliquant une seconde fois sur la case a cocher.

J'ai essayé votre code, j'ai pour cela mis une case en TripleState=False, mais quand j'execute ma macro et que je sélectionne ma case a cocher rien ne s'afficher dans ma listbox, je pense que cela viens du fait que je soit en " _click()" mais je ne sais sous quel état passer cela pour resoudre mon problème.

En vous souhaitant une bonne journée.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re,

En fait si tu essaies à "If CTRL.Value = False Then" , il mettra toutes les CheckBoxes dans la ListBox...
Je ne maitrîse pas vraiment le TripleState, je n'en ai jamais eu besoin... Il faut chercher sur le net...

PS Le Click ne devrait avoir aucune incidence là dedans à mon avis, ce qui compte c'est la Value

Si je fais ceci avec Deux CommandButtons sur ton Userform :
VB:
Private Sub CommandButton1_Click()
Dim CTRL As Control

For Each CTRL In Me.Controls
    If TypeName(CTRL) = "CheckBox" Then
         CTRL.Value = True
    End If
Next CTRL
End Sub

Private Sub CommandButton2_Click()
Dim CTRL As Control

For Each CTRL In Me.Controls
    If TypeName(CTRL) = "CheckBox" Then
        If CTRL.Value = True Then
            Me.ListingTrou.AddItem CTRL.Caption
        End If
    End If
Next CTRL
End Sub

Celà fonctionne :
Tipeu.gif



Bon Courage !
@+Thierry
 

Tipeu

XLDnaute Nouveau
Re,

En fait si tu essaies à "If CTRL.Value = False Then" , il mettra toutes les CheckBoxes dans la ListBox...
Je ne maitrîse pas vraiment le TripleState, je n'en ai jamais eu besoin... Il faut chercher sur le net...

PS Le Click ne devrait avoir aucune incidence là dedans à mon avis, ce qui compte c'est la Value

Si je fais ceci avec Deux CommandButtons sur ton Userform :
VB:
Private Sub CommandButton1_Click()
Dim CTRL As Control

For Each CTRL In Me.Controls
    If TypeName(CTRL) = "CheckBox" Then
         CTRL.Value = True
    End If
Next CTRL
End Sub

Private Sub CommandButton2_Click()
Dim CTRL As Control

For Each CTRL In Me.Controls
    If TypeName(CTRL) = "CheckBox" Then
        If CTRL.Value = True Then
            Me.ListingTrou.AddItem CTRL.Caption
        End If
    End If
Next CTRL
End Sub

Celà fonctionne :
Regarde la pièce jointe 1074422


Bon Courage !
@+Thierry

J'ai essayé de reproduire ce que vous m'avez mis en code disponible, mais lorsque que j'execute la macro celle ci m'affiche une erreur de "projet ou bibliothèque introuvable" sur le CTRL As Control.
 

Tipeu

XLDnaute Nouveau
Regarde si tu as ces références manquantes dans Outils => Référence

Regarde la pièce jointe 1074428

Auquel cas décoches-les "MISSING" ...
(A mon avis tu ne dois pas être sur ta machine avec AutoCad)
@+Thierry

Merci beaucoup. (Autocad etait bien present sur ma machine c'est le AutoCad/Object et le AxMPolygon qui m’embêtais)

Serait-il possible d’évité le CommandButton2 et que la listbox "s'actualise en continue" ?
A l'heure actuel, j'ai la possibilité de rajouter au fur et a mesure des cases a cocher mais cela me fait des doublons sur les anciennes cases cocher.
De plus ma listbox sera aussi une liste sélectionnable pour géré mes 2 possibilités, Cercle seul ou Cercle et cercle secondaire.

Merci de votre aide, j'ai l'impression de mettre attaqué a un roc avec les userform.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Tipeu

Pour éviter les CommandButtons, il faudrait faire un module de Class pour capter l'évènement click de chaque CheckBox vu que tu en as une rimbambelle... Mais c'est un peu "hardu" ...
Recherche sur ce Forum il y a eu des exemples il n'y a pas si longtemps...

Sinon par checkbox :
VB:
Private Sub Trou36_Click()
ListingTrouUpdate
End Sub

ListingTrouUpdate étant la macro qui était dans le CommandButton2... mais c'est lourd avec beaucoup de CheckBoxes...

@+Thierry
 

Dranreb

XLDnaute Barbatruc
Oui, ce n'est pas très compliqué:
De mémoire, par code, la propriété Value d'une CheckBox peut se voir attribuer la valeur Null. Elle apparait alors pâlement cochée.
Si sa propriété TripleState est à True, elle peut en outre aussi prendre cette valeur quand on clique dessus.
 

Statistiques des forums

Discussions
314 708
Messages
2 112 097
Membres
111 416
dernier inscrit
philipperoy83