patricktoulon
XLDnaute Barbatruc
Bonjour a tous
je suis tomber sur un sujet qui m'a interpellé qui parlais d'organigrame
jusque là rien de bien compliqué
perso j'ai ma propre méthode qui me convient tres bien et affiche les chape facon treeview (indenté)
je cherche a ajouter les connecteur
dans la boucle je le shape mère et le shap enfant sont clairement identifiés
mais impossible de faire des connecteur en angle droit (ajustement beginconnection etc... rien n'y fait j'ai toujours ces espèces de Z
je souhaiterais obtenir ceci
c'est après cette ligne que ca doit se placer
If parentshap.Name <> "" Then
le code en entier
comme vous le voyez le parent et l'enfant sont bien identifié dans la console
je suis tomber sur un sujet qui m'a interpellé qui parlais d'organigrame
jusque là rien de bien compliqué
perso j'ai ma propre méthode qui me convient tres bien et affiche les chape facon treeview (indenté)
je cherche a ajouter les connecteur
dans la boucle je le shape mère et le shap enfant sont clairement identifiés
mais impossible de faire des connecteur en angle droit (ajustement beginconnection etc... rien n'y fait j'ai toujours ces espèces de Z
je souhaiterais obtenir ceci
c'est après cette ligne que ca doit se placer
If parentshap.Name <> "" Then
le code en entier
VB:
Sub clearshapes()
For Each shap In Feuil2.Shapes
shap.Delete
Next
End Sub
Sub CreateOrgaTreeview()
Dim oXML As Object, oNode(), plage As Range, connector As Shape
clearshapes
Set plage = Feuil1.Range("A2:C" & Feuil1.Cells(Rows.Count, 1).End(xlUp).Row)
ReDim oNode(1 To plage.Rows.Count)
Set oXML = CreateObject("MSXML2.DOMDocument")
Set rang = oXML.appendchild(oXML.createelement("organigrame"))
For i = 1 To plage.Rows.Count
Set oNode(i) = oXML.createelement(Replace(plage.Cells(i, 1).Value, " ", "_"))
oNode(i).setattribute "parent", Replace(plage.Cells(i, 2), " ", "_")
oNode(i).setattribute "poste", Replace(plage.Cells(i, 3), "/", "|")
rang.appendchild (oNode(i))
Next
oXML.Save (Environ("userprofile") & "\Desktop\etape1.xml")
For i = 1 To UBound(oNode)
Set parnt = oXML.getelementsbytagname(oNode(i).getattribute("parent"))(0)
parnt.appendchild (oNode(i))
Next
oXML.Save (Environ("userprofile") & "\Desktop\etape2.xml")
Set elements = oXML.getelementsbytagname("*")
t = 10
For Each elem In elements
If elem.getattribute("parent") <> "organigrame" Then
Set shap = Feuil2.Shapes.AddShape(msoShapeFlowchartAlternateProcess, 10, 10, 150, 30)
shap.Top = t
shap.Name = Replace(elem.tagname, "_", " ")
Set parentshap = Feuil2.Shapes(Replace(elem.getattribute("parent"), "_", " "))
With shap
.Left = parentshap.Left + 50
.TextFrame.Characters.Text = .Name & vbCrLf & Replace(elem.getattribute("poste"), "|", "/")
.TextFrame.Characters(Start:=1, Length:=1000).Font.Size = 8
.TextFrame.Characters(Start:=1, Length:=1000).Font.ColorIndex = 0
.TextFrame.Characters(Start:=1, Length:=Len(.Name)).Font.Bold = True
.TextFrame.Characters(Start:=1, Length:=Len(.Name)).Font.ColorIndex = 3
.Fill.ForeColor.RGB = RGB(255, 255, 200)
End With
t = t + 35
If parentshap.Name <> "" Then
'c'est ici
Set connector = Feuil2.Shapes.AddConnector(msoConnectorElbow, parentshap.Left, parentshap.Top, 50, shap.Top - parentshap.Top)
connector.Name = shap.Name & "c"
connector.Line.Visible = True
connector.Line.ForeColor.RGB = vbBlack
connector.Adjustments.Item(1) = 0
'connector.ConnectorFormat.BeginConnect parentshap, 3'plante sur 2013
'connector.ConnectorFormat.EndConnect shap, 1'plante sur 2013
Debug.Print shap.Name & " parent= " & parentshap.Name
End If
End If
Next
End Sub
comme vous le voyez le parent et l'enfant sont bien identifié dans la console