# Logiciels > Microsoft Office >  Fort d'arborescences en VBA/Excel

## touche_a_tout

Bonjour,
Mon projet consiste  dcrire les filiations "intellectuelles" qui lient entre eux quelques centaines de compositeurs des XXe et XXIe sicles. La premire tape (rsolue avec Access) a consist  dresser la liste des filiations "individuelles" fournissant une srie de relations de type a > b (le signe > symbolisant ici le fait que le compositeur b est un disciple de a): soit a>b, c>d, e>f, etc. Il s'agit donc d'ordonner a, b, c, d, e, f en fonction de ces relations (sorte d'arbre gnalogie). Je ne sais pas comment raliser cet ordonnancement avec VBA pour Excel (si du moins c'est possible avec cet outil). 
Naturellement un compositeur peut avoir t le matre de plusieurs autres, ce qui fait penser  un arbre n-aire. Par contre, difficult supplmentaire par rapport aux exemples fournis dans la FAQ et les cours d'algorithmique: un compositeur peut tre le disciple de plusieurs matres (comme si, en gnalogie, un fils pouvait avoir plusieurs pres). Je pense  VBA_Excel parce que j'ai une petite exprience avec cet outil et que je sais exporter l'tat Access contenant toutes mes relations a>b vers une feuille de tableur. Je sais aussi que les possibilits d'Excel en calcul et en reprsentation graphique (j'en souhaite aussi !) sont suprieures  celles d'Access (qu'en plus je connais trs mal !). Est-ce que quelqu'un peut me fournir une piste ou m'orienter vers une application similaire stocke sur le web ?
J'ai beaucoup cherch  et je remercie d'avance ceux qui me donneront un coup de main.
Cordialement.
Pierre

----------


## patricktoulon

re
 Bonjour perso ca me fait penser a du XML 
mais sans aller jusque la si tu a toutes les donne d'affiliation il ne devrait pas y avaoir de probleme a arganiser cela dans les cellules 
cependant si affiliation (plusieur peres )il y aura certainement des doublons c'est imparable
en xml je verait les chose comme ca 



> <a1>
>  <proprit>
>      <proprit 1> blablabla </proprit 1>
>      <proprit 2> blablabla </proprit 2>
>      <b pere1>
>          <donne pere1> blablabla </donne1 pere 1>
>         <donne2 pere1> blablabla </donne2 pere1>
>      </b pere1>
>      <b pere2>
> ...


et ainsi de suite

----------


## touche_a_tout

Bonjour Patrick Toulon,
Je crois savoir que XML est un format de fichiers mais j'ignorais que c'tait un langage de programmation  ::oops::  ce qui  veut dire que ton exemple de code (si c'est bien du code XML) est pour moi totalement obscur. 
Organiser mes donnes dans des cellules me parat compliqu te je pensais plutt  une solution VBA mais peut-tre qu'il n'y en a pas ?
En tout cas merci et belle journe.
Cordialement
Pierre

----------


## patricktoulon

solution toute prete non il n'y en a pas 
il va te falloir la crer

----------


## touche_a_tout

Rebonjour,
Je m'y suis dj attel mais pour ma part je suis un senior (au sens usuel) ni expert ni distingu, je vais donc avoir besoin d'un peu d'aide. 
Je suis parti dans la direction suivante: De mes paires de compositeurs, l'un matre, l'autre lve, je fais une ingalit du genre Faur > Debussy (pas un jugement de valeur, bien entendu,  le second fut un lve du premier); ensuite tous mes individus sont pourvus d'un indice en faisant, en pseudo code
si A > B alors indiceA = indiceA + 1 et indiceB = indiceB + 0 (ce qui est implicite). 
Ensuite je les trie sur les indices, ce qui promet beaucoup d'ex-aequos. Tous ceux qui ont  le mme indice forment une "gnration" et, grce  un second indice, je trie les individus  l'intrieur de chaque gnration (je ne vois pas encore sur quel critre, mais une chose  la fois). 
Difficult: parmi les ex-aequos, il y aura en outre des doublons (2 ou + compositeurs lves du mme matre - ce sera le cas avec Faur, justement) et il faudrait pouvoir les fusionner. Mais si A a t l'lve de B puis de C qui tait lui-mme lve de B, A va appartenir  2 gnrations ! Solution ventuelle: un arc (qu'est-ce que c'est en VBA ?) qui franchit une gnration entre B et A et deux gnrations entre C et A.
Est-ce qu' vue de nez c'est ralisable en VBA for Excel ?
Y a-t-il des chemins plus directs ?
Merci d'avance d'y consacrer un peu de temps.
Cordialement
Pierre
P.S. J'ai omis un fait qui pse lourd: mes 431 profs-compositeurs ont (trs souvent) t lves-compositeurs des mmes 431 personnages, mais  pas rciproquement, bien sr ! Concrtement, dans ma table Excel o les auteurs sont sur 2 colonnes, un grand nombre figurent dans les 2 colonnes, et mme  plusieurs reprises !

----------


## Invit

Bonsoir,

Je pense qu'il faut envisager ta problmatique comme des fiches cartonn!


Une fiche identit qui dfini l'individu et son statut( lve des; matre des)

Tu renseigne les fiche de chaque individu sens te soucier du statut; dans un deuxime temps tu affecte a chaque individu (sous forme de collection) la fiche cartonn au choix du matre ou l'lve (statut)!

Ces deux tape terminer tu auras l'arbre complet!

Restera a dfinir ce que te feras de cette variable!

Je t'invite  t'intresser aux module de classe et aux dictionary (collecton)

En d'autre terme on crit l'identit de chaque compositeur sur une fiche cartonn et en suite on rajoute sa filiation!

En lisant la fiche d'un compositeur on retrouve la liste de c'est lves et de ses matres, on peut monter ou descendre dans la branche en suivant le fils de filiations de classes!

Le module de classe reprsente la fiche cartonn les dictionnary Matres et lves le fils conducteur de la filiation!

----------


## Menhir

En prenant un peu de recul (et avec beaucoup d'imagination), j'ai l'impression que ce que tu souhaites faire ressemble  des diagramme de Gant, en remplaant les tches par des personnes qui, elles aussi, ont une date de dbut et une date de fin.
Peut-tre que tu pourrais trouver ton bonheur en cherchant dans ce domaine.
Par exemple : 
http://www.ganttproject.biz/
http://www.projectlibre.com/

----------


## touche_a_tout

Merci dysorthographie et Menhir,
Les meilleurs volent  mon secours, super.
Je vais donc commencer par tudier du ct de Gant et du ct des classes (auxquelles je n'ai jamais compris grand-chose depuis le temps que je suis sur ce forum  ::oops:: )
Avoir des tas de choses  dcouvrir, c'est idal pour soutenir l'intrt.
Merci encore, je donnerai des nouvelles.
Bon week  end.
Cordialement
Pierre

----------


## Theze

Bonjour,

Si tu n'es pas trop  l'aise avec les Classes, tu as le type utilisateur (structure) qui pourrait t'aider. Un exemple bidon :


```

```

----------


## touche_a_tout

Bonjour Dysorthographie, Menhir et Theze,
Merci  vous trois. Je vais vous rpondre sparment dans cet ordre.



> Je pense qu'il faut envisager ta problmatique comme des fiches cartonn!


 Ca me semble tout  fait pertinent, merci, mais alors inutile d'exporter mes donnes d'Access dans Excel. Il vaut mieux continuer dans Access dont c'est la vocation, n'est-ce pas ? 
J'ai potass la "somme" d'Emmanuel Tissot sur les modules de classes et si j'ai bien compris, ils me permettraient de construire une srie d'objets inconnus dans Excel ou Access, la classe compositeurs, que je pourrais doter des proprits et des mthodes dont j'ai besoin pour mon arbre. C'est bien a ?
Quant au  Dictionary, il permettrait des oprations (tris, recherches) beaucoup plus rapides que si je mets mes fiches dans une collection.



> ...on peut monter ou descendre dans la branche en suivant le fils de filiations de classes!


  L je vois moins clair. Comment faire apparatre ces liens dans un dictionary, c'est ce que je n'ai pas compris.



> Restera a dfinir ce que te feras de cette variable!


J'ai une ide prcise de ce que je veux faire mais je ne vois pas du tout comment je m'y prendrai: ce que j'aimerais, c'est produire une reprsentation graphique de l'arbre (c'est pour a que j'avais pens  porter mes donnes dans Excel qui  est meilleur en graphiques). Mais comme je m'aventure sur des terres inconnues (Access, les classes, les dictionary) je fais une chose aprs l'autre !



> ...les dictionnary Matres et lves le fils conducteur de la filiation!


 L le souci est que pour la plupart les compositeurs sont  la fois Elves et Matres; comment faire 2 dictionary distincts ?
Denier dtail: dans ton post je ne sais pas toujours, quand tu cris fils, si je dois comprendre en anglais "son" ou "threads". Pourrais-tu prciser ?
Encore merci pour ta rponse et merci d'avance pour un complment d'information.
Pierre

----------


## touche_a_tout

Bonjour Menhir et merci,
Diagrammes de Gantt, je ne connaissais pas sous ce nom mais quand j'ai trouv a sur le web je me suis rendu compte que j'en avais dessin des dizaines pendant ma carrire: chaque fois que j'avais  raliser un imprim publicitaire faisant appel  une srie de corps de mtier, du concepteur-rdacteur au relieur ! Ils incluent la dimension temporelle, qui ne joue pas de rle en tant que telle dans mon projet. Mais merci tout de mme pour la suggestion. En plus j'ai appris que je faisais de la mthode PERT sans le savoir  ::mouarf:: 
Bonne journe
Cordialement
Pierre

----------


## touche_a_tout

Bonjour et merci, Theze,
Que des experts de haut niveau autour du berceau de mon bb !
C'est sympa de vouloir me simplifier la tche:



> Si tu n'es pas trop  l'aise avec les Classes, tu as le type utilisateur (structure) qui pourrait t'aider.


mais en lisant ce week end l'article fouill d'Emmanuel Tissot sur ce site je me suis rendu compte que ce n'tait pas si sorcier que a. Et puis a ne fait pas de mal d'apprendre des choses nouvelles  83 ans, j'y renoncerai quand je serai vieux :;): 
Merci tout de mme; je vais mettre ton post de ct, il pourrait bien me rendre service un jour ou l'autre.
Cordialement
Pierre

----------


## Invit

Bonjour,
Oui, en ralit c'est la musique qui fait peur au cinma, Pas le mort vivant!

Avec de module de classe coupl avec des dictionnaire tu obtiens

Artiste("Mozart").lve("clWoelfl").Euvres("?").etc

Chaque fiche cartonne sont lis entre elles par de dictionnaire!

Artiste("Mozart");Artiste("clWoelfl").

Artiste("Mozart").lve.add "clWoelfl", Artiste("clWoelfl")

Dans un premier temps nous rempliront la fiche signaltique de chaque artiste; dans un deuxime temps la filiation Matre lev!

----------


## touche_a_tout

Bonjour Dysorthographie et merci,
Merci pour les dtails informatiques que je tcherai de mettre  profit, mais surtout pour Woelffl, que je ne m'attendais pas  rencontrer sur le site de DVP ! Jamais entendu parler jusqu'ici et, en lisant sa bio, je dcouvre qu'il a crit une sonate pour flte. Comme c'est mon instrument, je sens que je vais jouer du Woellfl grce  un ingnieur en informatique crois sur le web: excellente surprise.
Quant  mon projet, il porte seulement sur le XXme sicle (et fin du XIXme), o le monde musical entre en bullition. Difficile de s'y retrouver ! n Du coup le lien Mozart-Woelffl n'y apparatra pas.
Encore merci et sans doute  bientt (pas pour un concert, mais probablement pour la liaison classe/dictionary).
Bonne semaine
Pierre

----------


## Invit

ici notre Classe compositeur est notre fiche signaltique (Fiche cartonn) que tu peux dupliquer  l'infinie!


```

```



```

```

----------


## touche_a_tout

Bonjour dysorthographie,
Merci pour ces codes qui vont me faire gagner un max de temps (et de jus de cervelle).
A bientt des nouvelles du chantier.
Cordialement
Pierre

----------


## Invit

Artiste("Mozart").Eleve("clWoelfl").Eleve("TOTO").Eleve("TITI").Eleve("TUTU").Maitre("groucho marx")

on verra par la suite qu'un module de classe est gocentriste et carpediem!

en revanche il respecte ses parents et aime ses enfants  mais ne connait pas ses grand parent n'y ses petits enfants!

on pourra l'interroger sur ses enfants et c'est lui qui posera la question  son fils!
Artiste("Mozart").fils(1).fils(1).fils(1).nom
Artiste("Mozart").fils(2).fils(1).fils(1).nom!



```

```

En rsum, disons que je suis un module de Classe, je sais o j'habite, qui sont mes parents (Maitre) et qui sont mes enfants (lve) et c'est tout!

(C'est dj mieux qu'un poisson rouge)

----------


## touche_a_tout

Bonsoir,
Belle dmonstration mais je suis distanc. Coder en plaisantant, ou plaisanter en codant, c'est pas encore dans mes cordes, je suis un besogneux du VBA. Mais je te suis reconnaissant de tes propositions que je mettrai en oeuvre ds que je les aurai comprises  ::(: 
Ce samedi j'ignorais encore tout des modules de classe, donc patience. Mine de rien ma petite appli a l'air de t'amuser pas mal. Es-tu musicien ?  Ouais, a ne me regarde pas !
Encore merci et  bientt
Cordialement
Pierre

----------


## Theze

Bonjour,

Si tu veux une reprsentation graphique de tes compositeurs avec matres et lves, le TreeView est l'outils qu'il te faut !

----------


## Invit

Bonjour,

J'aimerais tre musicien, je suis issus d'une famille qui parle de grande musiqus!

Je dchiffre pniblement une partissions. Je joue de la flte, de harmonica d'oreilles (pas de faon virtuose)!

Je suis un grand fainant, la vie c'est charg de m'offrir une belle vie. Je me suis content de me laisser porter!

Jeune homme je retranscrivais les chansons (Brassens,Le Forestier etc..) sous forme de partissions pour mes amis guitaristes!

 mon corps dfendant, on me gratifiait d'une certaine notorit et mes amis m'infligeaient l'audition de petits chanteurs  la voix de bois!


J'ai pass mes 40 dernire anne (en cours du soir) sur les bancs de l'cole pour recaler une ducation plutt laxiste!
C'est de cette faon dont j'ai obtenus mes diplmes!

----------


## Invit

Bonjour,

L'ajout dans la table maitre lves dpend de l'ordre affiliation dans le formulaire compositeur.

a n'a pas d'importance. Ce qui compte c'est que les couples soient conforme.

----------


## RyuAutodidacte

Coucou Robert,

 :+1:  :+1:  :+1:  :+1: 
Pour le concept, ta grande patience et l'aide qui s'en suit,   
 :;): 
Ryu

----------


## touche_a_tout

Hi,
Je n'aurais pas su dire mieux.
touche_a_tout

----------


## Invit

Bonjour RyuAutodidacte ( ::coucou:: ),

merci pour lensemble de mon oeuvre!

----------


## touche_a_tout

Bonjour dysorthographie, bonjour  toutes et  tous,
J'espre que cette colre est passe !
Je refais surface, alors voici:
1. Mon appli comporte une seule et unique table, ce qui rend la notion de relations assez hors de propos.
2. Access trane depuis des ges la rputation d'tre super-coriace (tout en tant puissant, ok)
3. Mes comptences de dveloppeur ont,  vue d'expert(s), d'troites limites.
Je suis donc revenu  mon ide initiale, voque dans le titre de cette discussion et je suis reparti de zro (mais toujours avec une collection de musiciens bidons) 
Cette appli fonctionne en grande partie. Les questions que je n'ai pas (encore) rsolues sont:
- L'tablissement d'un indice de gnrations (mais je ne dsespre pas d'y arriver)
- l'impression des fiches individuelles
- l'automatisation des captures d'cran en  vue de reproduire ces fiches individuelles (j'aimerais viter de cliquer 400 et quelques fois sur un bouton de commande).
C'est sur ce dernier point que je vous interroge en esprant que vous ne me tiendrez pas rigueur de mon long silence et de mon Nime virage de bord. Le problme est que la capture est toujours celle de l'lment actif, de sorte que j'ai collectionn les images de code ! Comment capturer le userform de chaque compositeur ? J'ai test une dizaine de bidouilles trouves sur Internet.
Autre aspect: L'approche Access impliquait la cration d'un dictionary dont les items taient ensuite repris pour tre complts par les valeurs de leurs properties. Avec Excel, j'ai trouv plus pratique de mener tout le processus  son terme (sauf capture et impression, voir ci-dessus) pour un compositeur avant de passer au suivant.
A chaque essai, mon classeur matre rcoltait plus de 400 feuilles individuelles qu'il fallait liminer une  une avant de passer  l'essai suivant, d'o pour l'viter l'introduction de classeurs "stock-fiches" (a me fait marrer: dans Pagnol le stockfish est le hareng saur !) dont le nom est index au moyen du temps du systme.
Je joins mon classeur (lagu  cette fin).
Merci d'avance si quelqu'un veut bien reprendre le pensum !
Cordialement
Pierre alias touche-a-tout

----------


## touche_a_tout

Rebonjour,
Prcisions: pour automatiser les captures d'cran, j'ai test 2 chemins:
1. Ajouter sur la fiche individuelle (userform) de chaque compos un textbox dont la valeur est incrmente  chaque nouvel individu; textbox_change dlenche la capture (d'un bout de code, hlas)
2. Avoir dans sur une autre feuille/un autre classeur une bidouille qui simule un click sur un commandbutton qui dclenche la capture. Ne suis pas arriv au bout.
Bien  vous
Pierre

----------


## touche_a_tout

Bonsoir,
Dcidment Dysorthographie est fch. Et rflexion faite je peux le comprendre. Je suis rest 16 semaines sans donner de nouvelles. A l'gard d'un des meilleurs experts de ce site, c'est un peu dsinvolte. Robert, je te fais mes excuses. 
Pendant tout ce temps, j'ai beaucoup travaill sur la Fort d'arborescences, j'ai dit un petit journal et j'ai pass des heures sur une de mes compositions (la premire qui ait des chances d'tre prsente au public).
Et poster pour dire que je travaille, que j'en bave mais que je n'ai rien  prsenter, a ne me paraissait pas trs positif. Ce forum n'est pas fait pour exprimer des tats d'me. Mais je reconnais que j'ai manqu de courtoisie.
En plus, j'ai joint  mon message un fichier inutilisable ! Bref c'est loup sur toute la ligne.
On verra si je suis capable de mieux faire la prochaine fois.
En attendant, cordiales salutations.
touche_a_tout

----------

