Bonsoir.
J'ai un début. Amusant à faire.
Essayerai demain de peaufiner la position x des chefs selon la moyenne des positions x des larbins.
Bonjour.
L'onglet Modèles contient en effet les modèles de formats de shapes à appliquer. Celui nommé ModèlePavé doit posséder un texte et avoir 4 sites de connections pour les connecteurs. L'autre, le ModèleConnecteur doit obligatoirement être un connecteur.
Ah, du temps j'en ai, pas de problème. Il m'est certes compté comme tout à chacun, mais il m'en reste suffisamment…
J'essayerai d'améliorer un peu le positionnement horizontal automatique des pavés. Mais pas tout de suite, car je sais par expérience qu'il est vain d'espérer une sortie automatique irréprochable (je fus autrefois confronté à un problème de tracé automatique de schémas isométriques de tuyauteries). je vais d'abord écrire de quoi rectifier la position des pavés, suite à ajustements manuels, soit en arrondissant les positions des centres à des multiples de 6, soit en les cadrant au milieu de cellules, comme vous préférez. La seconde implique d'établir une sorte de grille en dimensionnant les hauteurs et largeurs de cellules. Comment va-t-on commander les actions ? Les barres d'outils perso sont elle toujours applicables, ou faut-il un petit userform ?
Bonjour il faudrait juste un bouton de commande pour charger la macro qui lit le fichier hiérarchique et éventuellement avoir la possibilité d inclure ou non la possibilité de sélectionner quels champs est à ajouter en information ds le shape. Après la forme du dessin est parfait.
la version manuelle ne m'interesse pas a vrai dire car dans mon fichier test je presente la structure mais ma liste hierarchique comportant plusieurs Direction générale et surtout à la fin plusieurs dizaine de bureau par direction générale, direction, service , ous ervice, je me vois mal le faire manuellement .
Dim tw As MSComctlLib.TreeView
Dim Tbl, n
Private Sub UserForm_Initialize()
Tbl = Range("A2:C" & [A65000].End(xlUp).Row).Value
pere = "0"
Set tw = Me.MonArbre
n = UBound(Tbl)
tw.Nodes.Add(, , "NoeudMat" & pere, nomPere).Expanded = True ' Racine arbre
Fils pere
End Sub
Sub Fils(parent) ' procédure récursive
For i = 2 To n
cd = Tbl(i, 1)
niv = Len(cd) - Len(Replace(cd, ".", ""))
If niv = 0 Then temp = "0" Else p = InStrRev(cd, "."): temp = Left(cd, p - 1)
If temp = parent Then
tw.Nodes.Add("NoeudMat" & parent, tvwChild, "NoeudMat" & Tbl(i, 1), Tbl(i, 2)).Expanded = True
Fils Tbl(i, 1)
End If
Next i
End Sub