Aide pour un treeview sur excel

Fermé
missvai - 11 nov. 2008 à 09:49
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 12 nov. 2008 à 12:13
Bonjour,

J’aurai besoin de vos lumières SVP,
J’ai fait un fichier complique, et trop lourd, je n’arrive pas a le faire marcher plus simplement.
En gros, on veut une bdd de personnes et ensuite pouvoir étudier les rencontres que font les personnes entre elles (dans un but politique), et tout ça sous forme d un organigramme/trombi.

Le but ultime : on veut que chaque fois qu on rajoute des données (nouvelle personne ou nouvelle rencontre), on n’ai plus qu a appuyer sur « afficher le trombi » de l onglet « page de treeview » pour admirer le résultat.
Plus tard, on voudrait mettre des filtres mais chaque chose en son temps...

J ai trouve il y a qq temps un tuto sur un trombi publie sur developpez.com (Merci SilkyRoad)
J ai rajoute des onglets :
- 1 (BDD a remplir) ou l’utilisateur remplie la « BDD » (je suis consciente que ce n en n est pas une) hommes et a cote, les rencontres entre eux.
- 2 (TD de la BDD hommes) un onglet avec 2 td et un tableau pour des soucis de mise en forme (lignes en « escalier »), de doublons..
- 3 un autre (Mise en Forme) ou l on colle le tableau bleu obtenu en 2, et ou on lui vire les lignes vides
- 4 (Structure) c est l onglet que j´ai recupere du tuto. A partir de lui se forme le treeview. Il y a un problème avec des lignes vides qui ne le sont pas. Il faut sélectionner les cases vides et appuyer sur supprime.
- 5 c est l onglet ou il y a la commande pour afficher le treeview

C est complique, lourd et pas si simple pour quelqu’un qui ne sait pas ce qu’est une td (Mon chef). Le problème, c est qu il aime la tête qu’a l’organigramme final (sinon je serai restée sur des td toutes simples mais la, l avantage, c est que c est joli et en plus, il y a les photos des types qui s’affichent)
SI QUELQUE SE DEVOUE POUR ME SIMPLIFIER LA VIE, vous me rendriez un grand service !

Je précise que moi, je sais faire des tables dynamiques et qq formules basiques sur excel, mais la programmation : 0
Donc je ne sais pas modifier le vba pour que le tree view accepte la mise en forme qui sort directement de ma table dynamique (colonnes A a G de l’onglet TD de la bdd Hommes) et du coup, il faut que je la modifie pour que le treeview marche…ufff

J’ai essaye d etre clair, mais au cas ou, j ai mis des commentaires sur le fichier.

PS Existe-t-il un logiciel (non payant) déjà tout fait pour ça ??

Merci d avance

Ah pi, je viens de me rendre compte que le trombi marche pas (le bouton du treeview), l’organigramme si

Le fichier est sur rapidshare a l adresse suivante
http://rapidshare.de/files/40883047/Organigramme_essai.zip.html
A voir également:

4 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
11 nov. 2008 à 10:58
Bonjour,

Pourquoi ne pose tu pas la question sur le forum Excel-VBA de DVP ? Je pense que Michel-silkyroad se fera un plaisir de t'aider, c'est effectivement une référence pour les treeview...

Bonne recherche
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
11 nov. 2008 à 11:00
Bonjour,

Pas sûr d'avoir bien saisi où était ton pb (y'a de la prose à lire...) mais teste ça :
- Te créer une feuille 'Structure2' (je n'ai pas voulu utiliser la tienne pour comparaison)
- coller ce code dans un module :
Sub MiseEnForme()
    Dim i As Long
    Sheets("Structure2").Activate
    Sheets("Structure2").Cells.ClearContents ' nettoyer structure2
    Sheets("td de la bdd hommes").Columns("H:AC").Copy ' copier données
    Sheets("Structure2").[B1].PasteSpecial Paste:=xlPasteValues ' coller
    Sheets("Structure2").Rows("1:2").Delete Shift:=xlUp 'supprimer lignes 1:2
    ' si colonnes B,C,D vides supprimer la ligne
    For i = Sheets("Structure2").[B1].SpecialCells(xlLastCell).Row To 1 Step -1
        If Cells(i, 2) = "" And Cells(i, 3) = "" And Cells(i, 4) = "" Then
            Rows(i).EntireRow.Delete
        End If
    Next i
End Sub
- Lancer la macro et voir si c'est ça que tu veux.
Si oui, je pars de la feuille 'td de la bdd hommes', les autres deviennent inutiles. A part pour le traitement des éventuels doublons que j'ai vu trop tard et que tu ne décris pas...

eric
0
missvai Messages postés 2 Date d'inscription mardi 11 novembre 2008 Statut Membre Dernière intervention 12 novembre 2008
12 nov. 2008 à 08:41
Merci pour vos 2 reponses..
Hum Eric, j ai pas bien pige.. j ai cree un nouvel onglet que j ai appele structure 2, j ai mis ton code dans un module de cet onglet (c est pas dans un module de classe hein?) et qd je supprime les 2 autres onglets (mise en forme et structure) ca me donne un erreur de compilation.
j ai essaye en effacant ce qu il y a dedans (au lieu de supprimer l onglet) et ca marche pas non plus
je pense que j ai pas bien compris ce que tu recommandes

pour ce qui est de la prose, c est tres lonnnnnng et ennuyeux ce que j ai mis... ;-) donc je resume, c est bien ca ce que je veux, supprimer les trucs inutiles! donc a priori ta solution me conviendrait cependant ba, j y pige rien!

Michel, je prends bonne note!
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
12 nov. 2008 à 09:37
Bonjour,

Pas d'erreur de compil chez moi, sur excel 2003...
Je l'ai mis dans un module 'normal'.
http://www.cijoint.fr/cjlink.php?file=cj200811/cijYuZFxdj.zip
Les autres onglets, ne les supprime que plus tard, quand tu confirmeras ne pas en avoir besoin.
eric
0
missvai Messages postés 2 Date d'inscription mardi 11 novembre 2008 Statut Membre Dernière intervention 12 novembre 2008
12 nov. 2008 à 11:35
ok ca marche
petite precision : le but de l onglet structure 2, c est de prendre les donnees de la bddhommes et des les classer de telle facon qu a pres, il suffit de cliquer sur "voir l organigramme" de page de treeview pour que s affiche le trombi?? c est bien ca que tu essayes de faire?
alors pourquoi qd j efface les donnees des autres onglets, ca me donne un erreur. la macro n est elle pas supposee faire reference seulement a l onglet structure2? (je suis avec excel 2002)
Laure
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 215
12 nov. 2008 à 12:13
non, ta difficulté apparement était de préparer ta feuille 'structure', je n'ai fait que préparer une autre feuille 'structure2'.
A toi de voir si elle correspond à ce que tu as besoin (données que tu veux là où tu veux), et si oui soit adapter ton code pour l'utiliser à la place de 'structure', soit la renommer en 'structure', ou bien encore remplacer dans mon code Structure2 par Structure pour que cette macro travaille sur ta feuille.
(cette dernière solution me parait la plus simple mais rappelle-toi que j'ai zappé le traitement des doublons).

D'autre part dans ton code je vois que tu fais référence à 'Feuil2' ce qui n'est pas bon car 'Feuil2' dans vba ne correspond pas forcément à la feuille nommée 'Feuil2' (c'est bizarre mais c'est comme ça....). Remplace partout dans ton projet Feuil2 par worksheets("Structure") ou worksheets("Structure2") selon ton choix.

PS: je viens de tester, à-priori qcq chose ne lui plait pas dans la feuille fabriquée bien que visuellement elle semble identique à la tienne. Si tu peux arriver à trouver la différence ou ce qui lui manque...
0