Sub Add_AddIn() 'version Mac (peut être PC aussi pouvez vous confirmer SVP)
Dim addInPath As String
addInPath = "MonChemin/TEST.xlam"
AddIns.Add addInPath
AddIns("TEST").Installed = True '
End Sub
If " customui tabs tab group box buttonGroup menu gallery " Like "* " & e.Tagname & " *" Then Debug.Print String(e.indent, vbTab) & "</" & e.Tagname & ">"
Incroyable en voulant m'amuser
j'ai trouvé une méthode pour créer du xml avec MAC sans domdocument et valide
et je peux même insérer dans le code le control de validité du schemas customUI
ce que je fait tu le trouve nul part
on trouve bien quelques trucs ici et là avec un module classe mais au dela de 2 étages ils déraillent tous
je suis xptdr je fais ça en 6 lignes d'appel
Alors tu veux apprendre comment on fait ou tu veux continuer avec ton module classe ?
C'est marrant car cette idée m'était passé par la têtehoh ben tu sais les classe je pourrais en parler des heures en c je code que comme ca
en attendant ,regarde ce que je te prépare
Regarde la pièce jointe 1174089
je vais essayer de te faire un exemple simple pour que tu comprenne la mécanique
il me semble …une question
est ce que l'on peut mettre des shapes (formes automatiques) des rectangle dans les feuilles par vba avec mac ????????
Ha oui qd même tu vas loin jusqu'à une représentation graphiqueok le creatorRibbonZ imageMso V One commencera comme ca
je ferais de la couleur et du design après
je crée le xml et je lance le visual avec des shapes sur la feuille
un peu comme dans mon créator mais sur feuille
Regarde la pièce jointe 1174096
ça m'impressionne, en tout cas j'avais raison que c'était possible
Type Xmlelement
id As String
label As String
indent As Long
parentId As String
TagName As String
vu As Boolean
End Type
Public AllElements() As Xmlelement
Dim element As Xmlelement
Sub init()
ReDim Preserve AllElements(0 To 0)
End Sub
Function Appendchild(parent As Xmlelement, enfant As Xmlelement) 'attribut d'affiliation
enfant.parentId = parent.id
End Function
Function createElement(TagName) As Xmlelement 'creation d'un element(tout type argument "Tagname" pour le type )
Dim elem As Xmlelement
elem.TagName = TagName
ReDim Preserve AllElements(UBound(AllElements) + 1): AllElements(UBound(AllElements)) = elem: createElement = AllElements(UBound(AllElements))
End Function
Function GetelementById(idx As String) As Xmlelement 'fonction pour rechercher un element portant un id précis(utile pour plus tard quand on construire dynamico
For i = 1 To UBound(AllElements)
If AllElements(i).id = idx Then GetelementById = AllElements(i): Exit Function
Next
End Function
Function getValidId(TagName) ' fonction pour determiner un id valide et non utilisé(variante de mon creator adapté pour la circonstance)
Dim e&, x As Boolean, i&
For e = 1 To 1000
vid = TagName & "_" & e
x = False
For i = 0 To UBound(AllElements)
If AllElements(i).id = vid Then x = True: Exit For
Next
If x = False Then getValidId = vid: Exit For
Next
End Function
Sub test()
init
Dim ParentX As Xmlelement
'creation du père de tous ( le patron)
element = createElement("père")
With element
.id = getValidId(.TagName)
.indent = 0
.label = "Robert"
ParentX = GetelementById("") 'le père n'a pas de parent
Appendchild ParentX, element
.indent = ParentX.indent + 1
AllElements(UBound(AllElements)) = element
End With
'maintenant je vais créer le fils
element = createElement("fils")
With element
.id = getValidId(.TagName)
.label = "jean"
ParentX = GetelementById("père_1") 'je choisi le parent a qui je veux l'affilier
Appendchild ParentX, element
.indent = ParentX.indent + 1
AllElements(UBound(AllElements)) = element
End With
'maintenant je vais créer le fils2
element = createElement("fils")
With element
.id = getValidId(.TagName)
.label = "Luc"
ParentX = GetelementById("père_1") 'je choisi le parent a qui je veux l'affilier
Appendchild ParentX, element
.indent = ParentX.indent + 1
AllElements(UBound(AllElements)) = element
End With
'maintenant pour l'exemple je vais créer le petit fils qui sera le fils du fils 1
'creation du petit fils
element = createElement("petitfils")
With element
.id = getValidId(.TagName)
.label = "kevin"
ParentX = GetelementById("fils_1") 'je choisi le parent a qui je veux l'affilier
.indent = ParentX.indent + 1
Appendchild ParentX, element
AllElements(UBound(AllElements)) = element
End With
'la voiture du du fils 1
'creation du petit fils
element = createElement("voiture")
With element
.id = getValidId(.TagName)
.label = "Renault"
ParentX = GetelementById("fils_1") ' je choisi a qui est la voiture
.indent = ParentX.indent + 1
Appendchild ParentX, element
AllElements(UBound(AllElements)) = element
End With
lecture
End Sub
Sub lecture()
For i = 1 To UBound(AllElements)
Dim e As Xmlelement
e = AllElements(i)
Debug.Print "<" & e.TagName & " id=""" & e.id & """" & " label=""" & e.label & """" & _
" parentID=""" & e.parentId & """" & " indent=""" & e.indent & """"
Next
Debug.Print "***************************************"
GenerateCodXmL
End Sub
Function GenerateCodXmL(Optional i As Long = 0)
Dim e As Xmlelement, a&
Static codeXml As String
e = AllElements(i)
If i = 0 Then PartCod = "": codeXml = ""
If Not e.vu Then
If " voiture " Like "* " & e.TagName & " *" Then fin = "/>" Else fin = ">"
PartCod = String(e.indent, vbTab) & "<" & e.TagName
PartCod = PartCod & " id = """ & e.id & """"""
If e.label <> "" Then PartCod = PartCod & " label=""" & e.label & """" & fin
PartCod = PartCod & fin
'codeXml = codeXml & PartCod & vbCrLf
Debug.Print PartCod
With AllElements(i): .vu = True: End With
End If
For a = i + 1 To UBound(AllElements)
If AllElements(a).vu = False Then
If AllElements(a).parentId = e.id Then
GenerateCodXmL a
End If
End If
Next
If " père " Like "* " & e.TagName & " *" Then
Debug.Print String(e.indent, vbTab) & "</" & e.TagName & ">"
'codeXml = codeXml & String(e.indent, vbTab) & "</" & e.TagName & ">" & vbCrLf
End If
If i = 0 And codeXml <> "" Then Debug.Print codeXml
GenerateCodXmL = codeXml
End Function