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

Excel Discussion :

Créer une arborescence [Toutes versions]


Sujet :

Excel

  1. #1
    Membre confirmé
    Inscrit en
    mars 2005
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 179
    Points : 471
    Points
    471
    Par défaut Créer une arborescence
    Bonjour,
    Je rencontre un souci que je ne sais comment aborder sur Excel.
    J'ai une liste de données, qui sont en fait des éléments normalement organisés en arborescence, pour chaque élément j'ai l'identifiant de son parent direct.
    Et je souhaite réorganiser les lignes du fichier pour que chaque élément ait ses enfants en dessous de lui, éventuellement avec un décalage de colonne pour lire plus facilement, bref reconstituer l'arborescence. Il y a plusieurs centaines de lignes.
    Par exemple, sur 3 colonnes, j'ai :
    Code Nom Parent
    R Racine -
    E1 Elément 1 R
    E2 Elément 2 R
    E3 Elément 3 R
    S1 Elément S1 E1
    S2 Elément S2 E2
    S3 Elément S3 S1

    Et j'aimerais transformer ça en :
    R
    E1
    S1
    S3
    E2
    S2
    E3

    (désolé pour la mise en page, l'éditeur accepte les espaces pour séparer les éléments, mais pas la visu).

    Comment aborderiez-vous le problème ? Macro ? Tableau croisé dynamique ? Formules ?
    Merci d'avance pour vos pistes.

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    juin 2007
    Messages
    16 034
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2007
    Messages : 16 034
    Points : 32 858
    Points
    32 858
    Par défaut
    Je peux me tromper mais, à mon avis, il n'y a qu'une macro VBA qui peut répondre à ton besoin.
    Et au niveau algorithme, elle ne va pas être simple (tout à fait faisable mais pas simple).
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    septembre 2012
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2012
    Messages : 190
    Points : 281
    Points
    281
    Par défaut
    bonjour,

    Si l’arborescence est fixe (ou rarement modifiée), il est possible de trier par 'liste personnalisée"

  4. #4
    Membre éprouvé Avatar de Tonton Nico
    Homme Profil pro
    Ingénieur
    Inscrit en
    septembre 2017
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : septembre 2017
    Messages : 389
    Points : 1 256
    Points
    1 256
    Par défaut
    Bonjour,

    Je pense qu'un petit fichier exemple des infos à trier serait sympa ^^

    Tonton
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

  5. #5
    Membre chevronné
    Homme Profil pro
    Inscrit en
    septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : septembre 2013
    Messages : 1 369
    Points : 2 153
    Points
    2 153
    Par défaut
    Bonsoir,

    Exemple en PJ

    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
     
    Dim n, ligne, debOrg, Tbl()
    Sub Liste()
      Tbl = Range("A2:B" & [A65000].End(xlUp).Row).Value
      Set debOrg = [Q1]
      debOrg.Resize(25, 25).Clear
      n = UBound(Tbl)
      ligne = 0: Ecrit2 Tbl(1, 1), 1
    End Sub
     
    Sub Ecrit2(parent, niv)       ' procédure récursive
      ligne = ligne + 1
      debOrg.Offset(ligne) = parent
      For i = 1 To n
        If Tbl(i, 2) = parent Then Ecrit2 Tbl(i, 1), niv + 1
      Next i
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

  6. #6
    Membre confirmé
    Inscrit en
    mars 2005
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : mars 2005
    Messages : 179
    Points : 471
    Points
    471
    Par défaut
    Je vais tenter ce bout de macro qui me semble pas mal
    Merci !

  7. #7
    Membre éprouvé Avatar de Tonton Nico
    Homme Profil pro
    Ingénieur
    Inscrit en
    septembre 2017
    Messages
    389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : septembre 2017
    Messages : 389
    Points : 1 256
    Points
    1 256
    Par défaut
    chapeau pour ce bout de code concis (d'ailleurs je vais essayer de tout comprendre, j'ai surement des trucs à apprendre de ces quelques lignes !!!); je ne pensais pas que ça serait aussi simple; du bon boulot !
    TontonNico

    On me dit souvent que je ressemble à Einstein... mais plutôt à Frank que Albert

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

Discussions similaires

  1. Créer une arborescence disque
    Par domiq44 dans le forum Shell et commandes GNU
    Réponses: 4
    Dernier message: 06/10/2006, 14h36
  2. Créer une arborescence
    Par walden dans le forum IHM
    Réponses: 12
    Dernier message: 30/06/2006, 20h55
  3. Créer une arborescence avec XSL
    Par kobe dans le forum XSL/XSLT/XPATH
    Réponses: 19
    Dernier message: 13/06/2006, 10h54
  4. créer une arborescence windows sous forme d'arbre java
    Par chupachoc dans le forum Composants
    Réponses: 3
    Dernier message: 01/10/2002, 17h48

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