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

Macros et VBA Excel Discussion :

[E-00] Treeview : Algo Recursivité sur une arborescence


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 240
    Par défaut [E-00] Treeview : Algo Recursivité sur une arborescence
    Bonjour,

    J'utilise un formulaire avec un treeview pour afficher une arborescence d'un soft externe. L'utilisateur se déplace dans le Treeview pour sélectionner un noeud. Une fois cela éffectuer il clique sur un bouton "importation" pour importer tout les élement interne a ce noeud dans un fichier externe.

    Les données que j'utilise fonctionne un peu comme une structure chainer :
    chaque élement est composé de :
    - un attribut ID
    - un attribut ID Pére (correspond a l'ID de l'élément parent)
    - une fonction renvoyant la liste des ID enfant


    Le probléme c'est qu'il y a x élément avec x noeud dans sa sélection.

    C'est plus un probléme d'algorithme que de programmation pure, Donc engros j'ai les neurones qui crame quand j'y réfléchit lol

    Sachant que c'est un probléme que certainement d'autre ont eu, qqun aurait il un algo a proposer qui utiliser la recursivité ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 44
    Par défaut
    Bonjour, la structure retenue pour gérer ton arbre n'est pas très bien choisie, tu n'as de moyen de connaître l'ordre des enfants (si cela est important).
    En général, on a un pointeur sur le père, un pointeur sur l'aîné direct :
    Père
    '- Fils 1 <-- Fils 2
    '-PetitFils1.1 '-PetitFils2.1
    Mais bon, voilà un algo pour ton cas :

    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
    PROCEDURE importeNoeuds(entrée/sortie : oNoeudCourant : noeud)
    VAR
      listeEnfants : liste des noeuds enfants
      iElement : entier, indice de l'enfant parcouru
      oNoeudEnfant : noeud
    DEBUT
      listeEnfants <- listeNoeudsEnfants(oNoeudCourant)
      SI listeEnfants est vide ALORS
        RETOUR // rien à faire
      SINON
        POUR iElement <- 0 A Taille(listeEnfants) FAIRE
          oNoeudEnfant <- listeEnfants[ iElement ]
          AFFICHER(oNoeudEnfant.LInformationQuiVabien)
          importeNoeuds(oNoeudEnfant)
        FINPOUR
      FINSI
    FIN
    On l'appelle on lui transmettant le noeud sélectionné ou la racine si on veut tout afficher. La ligne AFFICHER... dépend de ce que tu veux faire avec les informations du noeud enfant. L'ordre entre AFFICHER et l'appel récursif peut changer selon ce que tu veux faire : en plaçant l'appel en premier tu parcours d'abord toute la profondeur du sous arbre avant de faire le traitement.

    PS : quand on manipule des arbres les petits dessins sont nos amis.

    Bon courage.

  3. #3
    Membre très actif
    Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Juin 2006
    Messages
    240
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2006
    Messages : 240
    Par défaut
    Bien vu, engros pour faire la recursivité il faut que la fonction fasse appelle a elle même... Je pensais qu'elle allait partir en vrille mais en y reflechisant j'en suis venu au même point et j'ai finallement fais un algo quasi identique au tient.

    Merci du coup de main, ça m'a permis a savoir si mes neurones n'ont pas trop souffert lol.

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

Discussions similaires

  1. Petit problème de requête sur une arborescence.
    Par grandpa006 dans le forum Requêtes
    Réponses: 1
    Dernier message: 06/03/2008, 10h29
  2. Recursivité sur une table
    Par Pilloutou dans le forum Langage SQL
    Réponses: 6
    Dernier message: 22/10/2007, 16h00
  3. Réponses: 1
    Dernier message: 16/07/2007, 11h13
  4. Réponses: 4
    Dernier message: 08/05/2007, 10h57
  5. [XSLT]Algo pour créer une arborescence
    Par Yudala dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 08/03/2007, 15h49

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