Vous utilisez un navigateur obsolète. Il se peut que ce site ou d'autres sites Web ne s'affichent pas correctement. Vous devez le mettre à jour ou utiliser un navigateur alternatif.
XL 2016positions de shapes dans un organigramme créé par VBA
Je poursuis mes lentes avancées afin de finaliser mon classeur.
Je n'arrive pas à caler correctement les espaces entre les shapes. Une image valant souvent mieux qu'un long discours, je la publie (ainsi que le classeur anonymisé)
Merci à tout le monde
Pièces jointes
ORGANIGRAMME 11 - 5 NIVEAUX test exceldownloads.xlsm
Bonjour... un peu foutoir, je n'en doute pas. Code construit petit à petit sans maîtrise du VBA.... mais en tâtonnant, faisant des tests, glanant les conseils ici...
Bonjour à toutes et à tous, J'ai tenté un code VBA afin de créer automatiquement un organigramme hiérarchique (utilisant SmartArt). Je rencontre une erreur à l'instruction : QNodes(Range("B" & i)).Demote Quelqu'un(e) aurait une idée pour me sortir de cette impasse ? Merci beaucoup
excel-downloads.com
Avec l'avantage de formatage offert par les SmartArt
(voir ci-dessous)
Bonjour à toutes et à tous, J'ai tenté un code VBA afin de créer automatiquement un organigramme hiérarchique (utilisant SmartArt). Je rencontre une erreur à l'instruction : QNodes(Range("B" & i)).Demote Quelqu'un(e) aurait une idée pour me sortir de cette impasse ? Merci beaucoup
J'attends d'abord de savoir si cette fois tu restes sur les SmartArt
(Ce que tu n'as fait suite à mon intervention dans ton 1er fil)
Comme je l'ai dit, je ne vais passer N minutes dans mon VBE à jour avec les SmartArt si au final, tu prends une autre voie comme celle de ta macro dans le PJ du 1er message.
J'attends d'abord de savoir si cette fois tu restes sur les SmartArt
(Ce que tu n'as fait suite à mon intervention dans ton 1er fil)
Comme je l'ai dit, je ne vais passer N minutes dans mon VBE à jour avec les SmartArt si au final, tu prends une autre voie comme celle de ta macro dans le PJ du 1er message.
Je demandais juste à voir le fichier et son code VBA... pour le travailler au cas où.... c'est toujours intéressant de se nourrir de ce qui existe déjà
Bonjour à toutes et à tous, J'ai tenté un code VBA afin de créer automatiquement un organigramme hiérarchique (utilisant SmartArt). Je rencontre une erreur à l'instruction : QNodes(Range("B" & i)).Demote Quelqu'un(e) aurait une idée pour me sortir de cette impasse ? Merci beaucoup
excel-downloads.com
1) Pas eu de commentaires sur tes tests de mon code
2) Ce code n'est pas présent dans la PJ du message de cette discussion.
Donc je suis pas très chaud à passer du temps sur une question, si le demandeur change son fusil d'épaule en cours de route.
Attendons lundi, le retour de @Zon et sa proposition basée sur ton nouveau code (sans SmartArt)
Tout d'abord un grand merci à Staple1600 pour le respect que tu m'accordes en attendant ma réponse ( ce qui n'était plus forcément le cas y a quelques années..) de laisser ta porte ouverte à Halecs93 pour lui apporter quand même ton aide.
Même si je ne suis pas modérateur du site et en tant que vieux contributeur du forum , cela fait plus de 21 ans que j'ai commencé sur XLD, Halecs93 je te mets gentiment un carton jaune avec une amende de 2 bières pour les contributeurs du fil que tu as ouvert sur les smartArt. Il eût fallu que tu répondisses même si cela te convenait pas.
1 ère question:
Halecs93, tu fixes la position gauche de père avec L1 soit 250 dans ton code quelque soit le nombre d'enfants.
On sait que le coté droit du 1 er enfant est en 235 , puis le 2eme en 478 (soit 243 d'écart) , le n eme en 235+243*n ..
Pour trouver le milieu de la distance du connecteur j'ai pas trouvé mieux que faire la différence entre la droite du dernier enfant et le 1 er enfant , ce qui donne en factorisant (nbshape enfants-1 *243 )-8)/2
Testes an rajoutant cette fonction
VB:
Function NbshapeS(Plage As Range, NumCol As Integer) As Integer
NbshapeS = WorksheetFunction.CountIf(Plage, NumCol)
End Function
Pere tu peux le définir ainsi en début de ton code (je remplace L1)
Code:
Set pere = Sheets("ORGANIGRAMME").Shapes.AddShape(msoShapeRoundedRectangle, (((NbshapeS(r.Columns(3), 2) - 1) * 243) - 8) / 2, T, larg, haut)
2eme question; testes la 1ere question d'abord, sinon pourquoi définir en dur un écart de 4 cm (ta variable T2) si tu veux mettre plus ???
Tout d'abord un grand merci à Staple1600 pour le respect que tu m'accordes en attendant ma réponse ( ce qui n'était plus forcément le cas y a quelques années..) de laisser ta porte ouverte à Halecs93 pour lui apporter quand même ton aide.
Même si je ne suis pas modérateur du site et en tant que vieux contributeur du forum , cela fait plus de 21 ans que j'ai commencé sur XLD, Halecs93 je te mets gentiment un carton jaune avec une amende de 2 bières pour les contributeurs du fil que tu as ouvert sur les smartArt. Il eût fallu que tu répondisses même si cela te convenait pas.
1 ère question:
Halecs93, tu fixes la position gauche de père avec L1 soit 250 dans ton code quelque soit le nombre d'enfants.
On sait que le coté droit du 1 er enfant est en 235 , puis le 2eme en 478 (soit 243 d'écart) , le n eme en 235+243*n ..
Pour trouver le milieu de la distance du connecteur j'ai pas trouvé mieux que faire la différence entre la droite du dernier enfant et le 1 er enfant , ce qui donne en factorisant (nbshape enfants-1 *243 )-8)/2
Testes an rajoutant cette fonction
VB:
Function NbshapeS(Plage As Range, NumCol As Integer) As Integer
NbshapeS = WorksheetFunction.CountIf(Plage, NumCol)
End Function
Pere tu peux le définir ainsi en début de ton code (je remplace L1)
Code:
Set pere = Sheets("ORGANIGRAMME").Shapes.AddShape(msoShapeRoundedRectangle, (((NbshapeS(r.Columns(3), 2) - 1) * 243) - 8) / 2, T, larg, haut)
2eme question; testes la 1ere question d'abord, sinon pourquoi définir en dur un écart de 4 cm (ta variable T2) si tu veux mettre plus ???
Ce site utilise des cookies pour personnaliser le contenu, adapter votre expérience et vous garder connecté si vous vous enregistrez.
En continuant à utiliser ce site, vous consentez à notre utilisation de cookies.