OVH Cloud OVH Cloud

création dynamique organigramme

15 réponses
Avatar
Aurelia
Bonjour à tous,

Je vaudrais créer dynamiquement un organigramme hiérarchique, c'est-à-dire
une "Shape" contenant un "diagram" ordonné de type "msoDiagramOrgChart" avec
des noeuds.

Mon problème est le suivant : j'arrive bien à créer l'arborescence de
l'organigramme, mais je ne peux rien écrire, depuis le code vba, dans les
bulles de ce dernier. Le seul moyen de valuer le texte des cases du diagram
est de le faire "à la main" depuis excel. Hors, je voudrais une création
dynamique...

Plus précisement, voilà la cause de ce problème : le texte de chaque bulle
est accessible en lecture seule mais je ne peux pas le définir une valeur,
un texte.
La ligne suivante échoue :
shpDiagram.DiagramNode.Children.FirstChild.TextShape.TextFrame.Characters.Te
xt = "abcdef"
Car l'attribut "Text" est en lecture seule quand l'objet renvoyé est un
"Range"... Et "Characters" renvoie un "Range" !

Cette ligne-ci réussit car on ne fait qu'une consultation : "MsgBox
shpDiagram.DiagramNode.Children.FirstChild.TextShape.TextFrame.Characters.Te
xt"

Quelqu'un aurait-il un moyen de contourner ce problème ? ou de forcer
l'écriture pour cette propriété ?


Merci d'avance,

Aurélia
____________________________________________________________
Sub CreateOrganigramme()
Dim shpDiagram As Shape
Dim dgnRoot As DiagramNode
Dim dgnNext As DiagramNode
Dim intCount As Integer
Dim txt As String

'Add organization chart to current document
Set shpDiagram = ActiveSheet.Shapes.AddDiagram( _
Type:=msoDiagramOrgChart, Left:=10, _
Top:=15, Width:=200, Height:=200)

Set dgnRoot = shpDiagram.DiagramNode.Children.AddNode

' MsgBox
shpDiagram.DiagramNode.Children.FirstChild.TextShape.TextFrame.Characters.Ca
ption

Call ajoutNoeud(shpDiagram, dgnRoot)

' Access the node immediately following
' the first diagram node
Set dgnNext = dgnRoot.Children.Item(1).NextNode

' Add three child nodes to the node immediately
' following the first diagram node
For intCount = 1 To 3
dgnNext.Children.AddNode
Next intCount

End Sub
____________________________________________________________

Sub ajoutNoeud(shpDiagram As Shape, dgnRoot As DiagramNode)
Dim ligne As Integer
Dim shText As Shape
ligne = 1

Do Until IsEmpty(Feuil3.Cells(ligne, 13))
dgnRoot.Children.AddNode


ligne = ligne + 1
Loop
End Sub
____________________________________________________________

10 réponses

1 2
Avatar
Pascal Engelmajer
Salut,
quelle-est la binliothèque de référence ?
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Aurelia" a écrit dans le message de news:
#
Bonjour à tous,

Je vaudrais créer dynamiquement un organigramme hiérarchique, c'est-à-dire
une "Shape" contenant un "diagram" ordonné de type "msoDiagramOrgChart"
avec

des noeuds.

Mon problème est le suivant : j'arrive bien à créer l'arborescence de
l'organigramme, mais je ne peux rien écrire, depuis le code vba, dans les
bulles de ce dernier. Le seul moyen de valuer le texte des cases du
diagram

est de le faire "à la main" depuis excel. Hors, je voudrais une création
dynamique...

Plus précisement, voilà la cause de ce problème : le texte de chaque bulle
est accessible en lecture seule mais je ne peux pas le définir une valeur,
un texte.
La ligne suivante échoue :

shpDiagram.DiagramNode.Children.FirstChild.TextShape.TextFrame.Characters.Te

xt = "abcdef"
Car l'attribut "Text" est en lecture seule quand l'objet renvoyé est un
"Range"... Et "Characters" renvoie un "Range" !

Cette ligne-ci réussit car on ne fait qu'une consultation : "MsgBox

shpDiagram.DiagramNode.Children.FirstChild.TextShape.TextFrame.Characters.Te

xt"

Quelqu'un aurait-il un moyen de contourner ce problème ? ou de forcer
l'écriture pour cette propriété ?


Merci d'avance,

Aurélia
____________________________________________________________
Sub CreateOrganigramme()
Dim shpDiagram As Shape
Dim dgnRoot As DiagramNode
Dim dgnNext As DiagramNode
Dim intCount As Integer
Dim txt As String

'Add organization chart to current document
Set shpDiagram = ActiveSheet.Shapes.AddDiagram( _
Type:=msoDiagramOrgChart, Left:, _
Top:, Width: 0, Height: 0)

Set dgnRoot = shpDiagram.DiagramNode.Children.AddNode

' MsgBox

shpDiagram.DiagramNode.Children.FirstChild.TextShape.TextFrame.Characters.Ca

ption

Call ajoutNoeud(shpDiagram, dgnRoot)

' Access the node immediately following
' the first diagram node
Set dgnNext = dgnRoot.Children.Item(1).NextNode

' Add three child nodes to the node immediately
' following the first diagram node
For intCount = 1 To 3
dgnNext.Children.AddNode
Next intCount

End Sub
____________________________________________________________

Sub ajoutNoeud(shpDiagram As Shape, dgnRoot As DiagramNode)
Dim ligne As Integer
Dim shText As Shape
ligne = 1

Do Until IsEmpty(Feuil3.Cells(ligne, 13))
dgnRoot.Children.AddNode


ligne = ligne + 1
Loop
End Sub
____________________________________________________________





Avatar
Christian Herbé

--
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."


Et qu'en est-il de ceux qui "ont des vents" et qui savent très bien d'où
cela provient ?

Avatar
sabatier
m'sieur le maire, allons, un peu de tenue quand même : votre intervention
frise la chienlit...
jps

Christian Herbé wrote:


--
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."


Et qu'en est-il de ceux qui "ont des vents" et qui savent très bien d'où
cela provient ?



Avatar
Pascal Engelmajer
Salut,
oui pourquoi tant de Haines (Daniel W ?) ?

--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"sabatier" a écrit dans le message de news:

m'sieur le maire, allons, un peu de tenue quand même : votre intervention
frise la chienlit...
jps

Christian Herbé wrote:


--
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."


Et qu'en est-il de ceux qui "ont des vents" et qui savent très bien d'où
cela provient ?






Avatar
Pascal Engelmajer
Salut,
j'ai entendu causer...
mais je ne le connais pas particulièrement c'est juste un jeu de mot
ciblé...
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Christian Herbé" a écrit dans le message de news:
#

Salut,
oui pourquoi tant de Haines (Daniel W ?) ?


Tu connais ce monsieur ?

P.S. : au départ, je n'ai pas pu m'empêcher ce très mauvais jeu de mots





Avatar
Christian Herbé

Salut,
oui pourquoi tant de Haines (Daniel W ?) ?


Tu connais ce monsieur ?

P.S. : au départ, je n'ai pas pu m'empêcher ce très mauvais jeu de mots

Avatar
Christian Herbé

Salut,
j'ai entendu causer...
mais je ne le connais pas particulièrement c'est juste un jeu de mot
ciblé...


on parle bien de la même personne ?
http://www.engineering.manhattan.edu/mechanical/faculty/haines.html

Il vient régulièrement dans notre labo.

Avatar
Aurelia
Les bibliotèques de références utilisées sont :

MS Windows common controls 6 (SP6)

Ref edit controls

MS Forms 2.0 object library

MS Office 11.0 object library

OLE Automation

MS Excel 11.0 object library

VBA for Application





Merci



Aurélia

"Pascal Engelmajer" a écrit dans le
message de news:
Salut,
quelle-est la binliothèque de référence ?
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Aurelia" a écrit dans le message de news:
#
Bonjour à tous,

Je vaudrais créer dynamiquement un organigramme hiérarchique,
c'est-à-dire


une "Shape" contenant un "diagram" ordonné de type "msoDiagramOrgChart"
avec

des noeuds.

Mon problème est le suivant : j'arrive bien à créer l'arborescence de
l'organigramme, mais je ne peux rien écrire, depuis le code vba, dans
les


bulles de ce dernier. Le seul moyen de valuer le texte des cases du
diagram

est de le faire "à la main" depuis excel. Hors, je voudrais une création
dynamique...

Plus précisement, voilà la cause de ce problème : le texte de chaque
bulle


est accessible en lecture seule mais je ne peux pas le définir une
valeur,


un texte.
La ligne suivante échoue :



shpDiagram.DiagramNode.Children.FirstChild.TextShape.TextFrame.Characters.Te

xt = "abcdef"
Car l'attribut "Text" est en lecture seule quand l'objet renvoyé est un
"Range"... Et "Characters" renvoie un "Range" !

Cette ligne-ci réussit car on ne fait qu'une consultation : "MsgBox



shpDiagram.DiagramNode.Children.FirstChild.TextShape.TextFrame.Characters.Te

xt"

Quelqu'un aurait-il un moyen de contourner ce problème ? ou de forcer
l'écriture pour cette propriété ?


Merci d'avance,

Aurélia
____________________________________________________________
Sub CreateOrganigramme()
Dim shpDiagram As Shape
Dim dgnRoot As DiagramNode
Dim dgnNext As DiagramNode
Dim intCount As Integer
Dim txt As String

'Add organization chart to current document
Set shpDiagram = ActiveSheet.Shapes.AddDiagram( _
Type:=msoDiagramOrgChart, Left:, _
Top:, Width: 0, Height: 0)

Set dgnRoot = shpDiagram.DiagramNode.Children.AddNode

' MsgBox



shpDiagram.DiagramNode.Children.FirstChild.TextShape.TextFrame.Characters.Ca

ption

Call ajoutNoeud(shpDiagram, dgnRoot)

' Access the node immediately following
' the first diagram node
Set dgnNext = dgnRoot.Children.Item(1).NextNode

' Add three child nodes to the node immediately
' following the first diagram node
For intCount = 1 To 3
dgnNext.Children.AddNode
Next intCount

End Sub
____________________________________________________________

Sub ajoutNoeud(shpDiagram As Shape, dgnRoot As DiagramNode)
Dim ligne As Integer
Dim shText As Shape
ligne = 1

Do Until IsEmpty(Feuil3.Cells(ligne, 13))
dgnRoot.Children.AddNode


ligne = ligne + 1
Loop
End Sub
____________________________________________________________









Avatar
Christophe CAMPAIN
Bonjour Aurélia,

Je ne sais pas exactement ce que tu veux faire de tes organigrammes, mais il
y a quelques temps, j'ai créé une petite barre d'outils (avec code VBA qui
va avec) permettant de réaliser et de mettre en forme de manière simple des
organigrammes me servant à décrire les processus de ma boite (Vive l' EN
9100). Si ça te dis, je peux te la transmettre "en l'état", en observant le
code VBA tu aura peut-être qq pistes qui t'aideront...

@+

Kristof

"Aurelia" a écrit dans le message de news:
#
Les bibliotèques de références utilisées sont :

MS Windows common controls 6 (SP6)

Ref edit controls

MS Forms 2.0 object library

MS Office 11.0 object library

OLE Automation

MS Excel 11.0 object library

VBA for Application





Merci



Aurélia

"Pascal Engelmajer" a écrit dans le
message de news:
Salut,
quelle-est la binliothèque de référence ?
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Aurelia" a écrit dans le message de news:
#
Bonjour à tous,

Je vaudrais créer dynamiquement un organigramme hiérarchique,
c'est-à-dire


une "Shape" contenant un "diagram" ordonné de type
"msoDiagramOrgChart"



avec
des noeuds.

Mon problème est le suivant : j'arrive bien à créer l'arborescence de
l'organigramme, mais je ne peux rien écrire, depuis le code vba, dans
les


bulles de ce dernier. Le seul moyen de valuer le texte des cases du
diagram

est de le faire "à la main" depuis excel. Hors, je voudrais une
création



dynamique...

Plus précisement, voilà la cause de ce problème : le texte de chaque
bulle


est accessible en lecture seule mais je ne peux pas le définir une
valeur,


un texte.
La ligne suivante échoue :





shpDiagram.DiagramNode.Children.FirstChild.TextShape.TextFrame.Characters.Te

xt = "abcdef"
Car l'attribut "Text" est en lecture seule quand l'objet renvoyé est
un



"Range"... Et "Characters" renvoie un "Range" !

Cette ligne-ci réussit car on ne fait qu'une consultation : "MsgBox





shpDiagram.DiagramNode.Children.FirstChild.TextShape.TextFrame.Characters.Te

xt"

Quelqu'un aurait-il un moyen de contourner ce problème ? ou de forcer
l'écriture pour cette propriété ?


Merci d'avance,

Aurélia
____________________________________________________________
Sub CreateOrganigramme()
Dim shpDiagram As Shape
Dim dgnRoot As DiagramNode
Dim dgnNext As DiagramNode
Dim intCount As Integer
Dim txt As String

'Add organization chart to current document
Set shpDiagram = ActiveSheet.Shapes.AddDiagram( _
Type:=msoDiagramOrgChart, Left:, _
Top:, Width: 0, Height: 0)

Set dgnRoot = shpDiagram.DiagramNode.Children.AddNode

' MsgBox





shpDiagram.DiagramNode.Children.FirstChild.TextShape.TextFrame.Characters.Ca

ption

Call ajoutNoeud(shpDiagram, dgnRoot)

' Access the node immediately following
' the first diagram node
Set dgnNext = dgnRoot.Children.Item(1).NextNode

' Add three child nodes to the node immediately
' following the first diagram node
For intCount = 1 To 3
dgnNext.Children.AddNode
Next intCount

End Sub
____________________________________________________________

Sub ajoutNoeud(shpDiagram As Shape, dgnRoot As DiagramNode)
Dim ligne As Integer
Dim shText As Shape
ligne = 1

Do Until IsEmpty(Feuil3.Cells(ligne, 13))
dgnRoot.Children.AddNode


ligne = ligne + 1
Loop
End Sub
____________________________________________________________













Avatar
Aurelia
Ok Kristof,

je suis preneuse j'y trouverai très certainement quelques pistes
Je te remercie sincèrement...
@+
Aurélia



"Christophe CAMPAIN" a écrit
dans le message de news:
Bonjour Aurélia,

Je ne sais pas exactement ce que tu veux faire de tes organigrammes, mais
il

y a quelques temps, j'ai créé une petite barre d'outils (avec code VBA qui
va avec) permettant de réaliser et de mettre en forme de manière simple
des

organigrammes me servant à décrire les processus de ma boite (Vive l' EN
9100). Si ça te dis, je peux te la transmettre "en l'état", en observant
le

code VBA tu aura peut-être qq pistes qui t'aideront...

@+

Kristof

"Aurelia" a écrit dans le message de news:
#
Les bibliotèques de références utilisées sont :

MS Windows common controls 6 (SP6)

Ref edit controls

MS Forms 2.0 object library

MS Office 11.0 object library

OLE Automation

MS Excel 11.0 object library

VBA for Application





Merci



Aurélia

"Pascal Engelmajer" a écrit dans le
message de news:
Salut,
quelle-est la binliothèque de référence ?
--
Amicalement.
Pascal
"il n'y a pas de vent favorable pour celui qui ne sait pas ou il va."
Sénèque.
http://www.ilyapa.net/excel
"Aurelia" a écrit dans le message de news:
#
Bonjour à tous,

Je vaudrais créer dynamiquement un organigramme hiérarchique,
c'est-à-dire


une "Shape" contenant un "diagram" ordonné de type
"msoDiagramOrgChart"



avec
des noeuds.

Mon problème est le suivant : j'arrive bien à créer l'arborescence
de




l'organigramme, mais je ne peux rien écrire, depuis le code vba,
dans




les
bulles de ce dernier. Le seul moyen de valuer le texte des cases du
diagram

est de le faire "à la main" depuis excel. Hors, je voudrais une
création



dynamique...

Plus précisement, voilà la cause de ce problème : le texte de chaque
bulle


est accessible en lecture seule mais je ne peux pas le définir une
valeur,


un texte.
La ligne suivante échoue :







shpDiagram.DiagramNode.Children.FirstChild.TextShape.TextFrame.Characters.Te

xt = "abcdef"
Car l'attribut "Text" est en lecture seule quand l'objet renvoyé est
un



"Range"... Et "Characters" renvoie un "Range" !

Cette ligne-ci réussit car on ne fait qu'une consultation : "MsgBox







shpDiagram.DiagramNode.Children.FirstChild.TextShape.TextFrame.Characters.Te

xt"

Quelqu'un aurait-il un moyen de contourner ce problème ? ou de
forcer




l'écriture pour cette propriété ?


Merci d'avance,

Aurélia
____________________________________________________________
Sub CreateOrganigramme()
Dim shpDiagram As Shape
Dim dgnRoot As DiagramNode
Dim dgnNext As DiagramNode
Dim intCount As Integer
Dim txt As String

'Add organization chart to current document
Set shpDiagram = ActiveSheet.Shapes.AddDiagram( _
Type:=msoDiagramOrgChart, Left:, _
Top:, Width: 0, Height: 0)

Set dgnRoot = shpDiagram.DiagramNode.Children.AddNode

' MsgBox







shpDiagram.DiagramNode.Children.FirstChild.TextShape.TextFrame.Characters.Ca

ption

Call ajoutNoeud(shpDiagram, dgnRoot)

' Access the node immediately following
' the first diagram node
Set dgnNext = dgnRoot.Children.Item(1).NextNode

' Add three child nodes to the node immediately
' following the first diagram node
For intCount = 1 To 3
dgnNext.Children.AddNode
Next intCount

End Sub
____________________________________________________________

Sub ajoutNoeud(shpDiagram As Shape, dgnRoot As DiagramNode)
Dim ligne As Integer
Dim shText As Shape
ligne = 1

Do Until IsEmpty(Feuil3.Cells(ligne, 13))
dgnRoot.Children.AddNode


ligne = ligne + 1
Loop
End Sub
____________________________________________________________

















1 2