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