IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Discussion :

[Treeview VBA] Liste des fils à partir d'un noeud donné


Sujet :

VBA

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 17
    Points : 12
    Points
    12
    Par défaut [Treeview VBA] Liste des fils à partir d'un noeud donné
    Bonjour tlm !

    Après 3h30 de recherches infructueuses sur le net, je vous expose mon problème. Je dispose dans un treeview d'une liste de familles et de leurs sous familles (et leurs sous-sous-famille, etc ...)
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    supFam1
       subfam1
         subfam1.1
         subfam1.2
         subfam1.3
       subfam2
         subfam2.1
    Et je souhaite récupérer/afficher, lorsque l'utilisateur clic sur un élément de l'arbre, la liste de toutes les sous familles et sous-sous familles du noeud courant.

    Je pense a l'utilisation d'une méthode récursive, mais je ne sais pas comment parcourir récursivement les noeuds fils d'un noeud donné (celui qui a été cliqué).

    Je pars sur la base suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub TV1_NodeClick(ByVal Nde As Object)
      dim resultat as string 'par exemple
      resultat = ListerSousNoeuds(Nde)
    End Sub
    et bien entendu c'est la fonction ListerSousNoeuds(ByVal Nde As Object) qui me fait défaut

    J'ai tenté d'utiliser des TreeNodes mais VBA/Access 2003 ne semble pas les reconnaître.

    Merci de votre aide

  2. #2
    Membre éclairé
    Avatar de Catbull
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    542
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 542
    Points : 854
    Points
    854
    Par défaut
    La méthode récursive semble en effet s'imposer. Par contre, ton receveur me semble incongru. Le plus simple est à mon avis de passer en paramètre le tableau devant contenir la liste de tes sous noeuds ou utiliser une variable globale.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    En fait le receveur est ici plus à titre d'exemple.
    En effet, un tableau serait plus adapaté mais là n'est pas le réel problème.

    Je ne sais pas comment utiliser les propriété/méthodes du Noeud courant pour pouvoir parcourir ses fils.

    Je cherche à pouvoir écrire une fonction du style:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Pour chaque Fils de NoeudCourant Faire
      'ici appel de ma fonction récursive 
      'et autres traitements
    Fin Pour
    Mon problème est donc de savoir comment coder en VBA : Pour chaque Fils de NoeudCourant Faire

    Merci de votre aide !

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Re salut!
    Bon après avoir cherché et cherché j'ai trouvé !
    Je n'arrivais pas a travailler directement sur mon arbre (il fallait en faire une copie dans mon code pour que cela fonctionne...)

    Pour ceux que ça intéresse, voici le source:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Public Sub getSubFamilies(ByVal Nde As Node, ByRef subfamlist As String)
    'retrieve the number of the sub families of the current node in the family tree
     
    Dim TV1cpy As TreeView
    Set TV1cpy = Form_CGDdbBrowser.TV1.Object
     
    Dim i As Integer
    If Nde.Children > 0 Then
    'continue exploration only if the current node has subnodes
        For i = Nde.Child.Index To Nde.Child.Index + Nde.Children - 1
        'browse each subnodes
            subfamlist = subfamlist & Replace(TV1cpy.Nodes.Item(i).Key, "O", "") & ", "
            getSubFamilies TV1cpy.Nodes(i), subfamlist
        Next i
    End If
    Set TV1cpy = Nothing
     
    End Sub
    Bien sur, rien ne m'obligeait a utiliser un passage par référence, mais dans mon cas, cela avait son intérêt, voilou !

    En espérant avoir pu aider quelqu'un d'autre

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 17
    Dernier message: 09/06/2011, 00h50
  2. Réponses: 5
    Dernier message: 24/02/2009, 09h05
  3. VBA: liste des applications ouvertes
    Par Stach dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/05/2008, 16h28
  4. Réponses: 4
    Dernier message: 09/02/2008, 13h50
  5. VBA Liste des Groups d'un User
    Par Keuf95 dans le forum Access
    Réponses: 2
    Dernier message: 24/08/2006, 14h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo