Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/04/2011, 16h44   #1
Nom
Membre habitué
 
Inscription : octobre 2005
Messages : 528
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 528
Points : 143
Points : 143
Par défaut obtenir l'element racine dans un Treeview Control

Bonjour à tous,

Je cherche depuis et comme je ne trouve pas, je me tourne vers vous

J'ai un treeview control avec (après une recherche) une liste qui s'affiche :
Code :
1
2
3
4
5
6
7
8
9
ItemA
--Sous Item1
---Sous Sous Item1
--Sous Item2
---Sous Sous Item2
ItemB
--Sous item1
---Sous Sous Item1
--Sous Item2
Lorsque je sélectionne un nœud ou sous nœud d'un item donné (quel qu’il soit), j'aimerai récupéré la clé de l'item du nœud Sous Sous Item1 (qui est obligatoire)
Mais je n'y arrive pas, je me mélange entre le Parent, le Root, les index etc ...

Donc si vous pourriez m'aider
Merci
__________________
Le savoir est une arme alors soyons armés
Nom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2011, 17h45   #2
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 256
Points : 5 256
Salut,

Ce n'est pas clair

Pour obtenir l'élément parent d'un item sélectionné, tu peux faire :

Code :
1
2
3
4
5
6
7
8
9
Private Sub TreeView1_NodeClick(ByVal Node As Object)
 
Dim nodeParent As Node
 
Set nodeParent = Node.Parent
 
MsgBox (nodeParent.Key)
 
End Sub
Pour obtenir le premier enfant de l'élément cliqué :

Code :
1
2
3
4
5
6
7
8
9
Private Sub TreeView1_NodeClick(ByVal Node As Object)
 
Dim NodeEnfant As Node
 
Set NodeEnfant = Node.Child
 
MsgBox (NodeEnfant.Key)
 
End Sub
A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 11h51   #3
Nom
Membre habitué
 
Inscription : octobre 2005
Messages : 528
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 528
Points : 143
Points : 143
Bonjour et merci de la réponse

Pour faire simple j'aimerai obtenir l'index du nœud racine : dans mon exemple ItemA ou ItemsB en fonction du groupe d'item selectionné
(Root ne me donne pas ce que je cherche puisque j'obtiens toujours 1)

J'ai essayé de construire une fonction mais sans succès :
Code vba :
1
2
3
4
5
6
7
8
9
10
11
Function ParentRoot(pIndex As Integer)
    Dim oIndex As Integer
    Debug.Print "pIndex :" & pIndex
    If Me.TreeViewArbo.Nodes.Item(pIndex).Parent Is Nothing Then 'si le noeud n'a pas de parent 
       oIndex = pIndex
    Else
        oIndex = Me.TreeViewArbo.Nodes.Item(pIndex).Parent.Index
        ParentRoot (oIndex)
    End If
fin:
End Function

Et l'appel :
Code vba :
1
2
3
oIndex = Me.TreeViewArbo.SelectedItem.Index
oIndex = ParentRoot(oIndex)
Debug.Print oIndex

mais cela me renvoi 0 systématiquement
A priori, pourtant la fonction se déroule bien mais je ne maitrise pas pas les fonction peut être ai je oublié quelque chose (je pense à un return)
__________________
Le savoir est une arme alors soyons armés
Nom est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/04/2011, 13h42   #4
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 205
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 205
Points : 5 256
Points : 5 256
Salut,

J'ai réécris ta fonction :

On remonte l'arbre jusqu'a la racine (parent is nothing) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Function ParentRoot(NodeS As Object) As Object
Dim NodeP As Object
 
Set NodeP = NodeS
 
  Do Until NodeP.Parent Is Nothing
 
     Set NodeP = NodeP.Parent
 
  Loop
 
Set ParentRoot = NodeP
 
End Function
Et son utilisation :

Code :
1
2
3
4
Dim Node1 As Node
 
Set Node1 = ParentRoot(TreeViewArbo.SelectedItem)
Debug.Print Node1.Key
A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 28/04/2011, 15h02   #5
Nom
Membre habitué
 
Inscription : octobre 2005
Messages : 528
Détails du profil
Informations forums :
Inscription : octobre 2005
Messages : 528
Points : 143
Points : 143
Merci beaucoup
Effectivement cela fonctionne
__________________
Le savoir est une arme alors soyons armés
Nom est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 08h20.


 
 
 
 
Partenaires

Hébergement Web