Check box dans treeview

bonjour a tous,

j'ai créer un treeview qui se construit de manière automatique a partir d'une de données (critère, sous critère) sur une feuille excel.

je lui ai mit des check box

je voudrais que l'utilisateur puisse cocher un ou plusieurs critères et récupérer les critères qu'il a coché pour in fine afficher des résultats en fonctions des critères sélectionné

je bloque un peu niveau idée là..

j'ai vu qu'il existe des

Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node) ceci est il pertinent dans mon cas?

merci si vous avez une idée!

a+

Bonjour,

L’évènement que tu indique intervient dés que l'ont clic sur un CheckBox.

Un TreeView n'est pas spécialement indiquer pour une sélection multiple bien que pas impossible.

Deux solutions pour valider la sélection, soit un bouton externe soit capturer l'évènement double-clic.

Ensuite passer toutes les nodes en revues et tester les ckeckBox.

A+

ok donc effectivement mon événement node_check me sert à rien dans mon cas.

du coup j'ai fait un bouton pour lancer une boucle qui va tester sur chaque nœud si la case est cochée (checked=true)

ça c'est bon mais à ce moment là comment ajouter le texte correspond à une liste? enfin où quelque part où je peux le récupérer après? Ou les afficher tous ensemble?

sinon, tu dis que le treeview n'est pas le plus adapté tu penser à quelle autre solution?

merci

Pour une autre solution cela m'est difficile de répondre sans plus de renseignement.

Pour ta question 1.

Si je suis bien, tu pourrais initialiser une liste avec les nodes sélectionnées. Voir la propriété Node.Key pour le texte.

    If TreeVew1.nodes(x).Checked then ListBox1.Additem TreeView1.Nodes(x).Key

Note : J'ai tapé la ligne à main levée et il pourrais y avoir des erreurs de syntaxe.

A+

ok l'idée de l'ajouter dans une listbox est nickel

par contre sait-tu si je peux mettre à jours en temps réel cette listbox?

c'est-à-dire qu'au fur et à mesure qu'on coche et décoche les cases, le critère s'affiche ou s'efface de la liste box automatiquement sans passer par un bouton pour "rafraichir"??

a utiliser le fameux node_check par exemple?

Bonjour joyed;

Je viens de lire votre poste qui est fort intéressent, mais je ne suis pas assez calé en VBA et mes connaissances en excel ne sont pas très pointues, alors je vous demande si possible de m'orienter sur la façon de mettre au point des treeview, car actuellement je travaille sur un projet ou cela me serait très utile. Je vous remercie et vous souhaite bon courage.

Hosni

Hosni a écrit :

Bonjour joyed;

Je viens de lire votre poste qui est fort intéressent, mais je ne suis pas assez calé en VBA et mes connaissances en excel ne sont pas très pointues, alors je vous demande si possible de m'orienter sur la façon de mettre au point des treeview, car actuellement je travaille sur un projet ou cela me serait très utile. Je vous remercie et vous souhaite bon courage.

Hosni

je t’avoue que je découvre aussi vba et notamment les treeview, si je peut t'aider ce sera avec plaisir pcq j'ai moi aussi galéré mais il faudrait que tu précise un peu ce que tu veux faire.

Moi je peux t'indiquer une façons de créer un treeview a partir d'un tableau de façons automatique

Mais oui, dans ce cas tu peu employer l'évènement Checked avec

Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
Dim i As Integer
    If Node.Checked Then
        ListBox1.AddItem Node.Key
    Else
        For i = 0 To ListBox1.ListCount
            If ListBox1.List(i) = Node.Key Then
                ListBox1.RemoveItem (i)
                Exit Sub
            End If
        Next i
    End If
End Sub

Tu dis..

Bonjour joyed,

Je reviens d'abord, pour te remercier de me consacrer de ton précieux temps, en fait c'est pour la mise en place d'une nomenclature de production, ou on a le principe de composé et composant(s) ou aussi il est question de placer des gammes (Equipements de Production) voila en gros ce que je fais si cela peut vous éclairer, merci encore et à plus.

Hosni.

Bonjour hosni et joyed.

Pouriez-vous créer votre propre topic Svp, sinon ont ne va plus pouvoir suivre ce fil.

Merci

A+

Merci lermite pour ton coup de pouce, c'est ce qu'il me fallait! je vais pouvoir avancer dans mon boulot. il me reste encore a afficher les résultats dans une nouvelle fenêtre en fonction des critères sélectionner

je vais m'y filer un peu! ^^

Salut,

je suis désolé de m'avoir introduis de cette façon je me retire et vous laisse bosser dans l'attente je vous dis bon courage et à plus

Hosni

pour un plus, y a t-il moyen d'affecter des check box seulement aux nodes fils?

Non, mais j'avais déjà prévu le coup

Private Sub TreeView1_NodeCheck(ByVal Node As MSComctlLib.Node)
Dim i As Integer
    'Annuler les nodes du root
    If Node.Children <> 0 Then
        Node.Checked = False
        Exit Sub
    End If
    If Node.Checked Then
        ListBox1.AddItem Node.Text
    Else
        For i = 0 To ListBox1.ListCount
            If ListBox1.List(i) = Node.Text Then
                ListBox1.RemoveItem (i)
                Exit Sub
            End If
        Next i
    End If
End Sub

Ça évitera au moins de pouvoir les sélectionner.

Si plus de deux niveaux il faut adapter le zéro

A+

Salut,

Ouai ça marche bien, enfin c'est un peu bizarre graphiquement puisque même si c'est false la case apparaît cochée

Cependant ça me permet quand même de pas l'ajouter dans ma listbox et ça c'est cool !

Peut-être quand ajoutant une petite image aux nœuds parents ça me cachera les checkbox?... à voir

Ou bien faire en sorte que si un nœud parent est coché alors tout les nœud enfant le sont aussi et s'ajoutent à la listbox, et si on décoche un nœud enfant alors le nœud parent est décoché aussi, un peu comme en général sur windows!

T'en pense quoi?

A+ merci

edit:

Ajouter une image ne cache pas du tout la checkbox, fallait s'y attendre...

Ton idée est pas mauvaise, mais un peu à toi de te casser la tête, si tu n'en sort VRAIMENT pas, reviens.

A+

Rechercher des sujets similaires à "check box treeview"