Sub test()
Dim Fichier$, Newname$
Fichier = Application.GetOpenFilename("custom ribbon Files (*.exportedUI;*.txt), *.exportedUI;*.txt", 1, "ouvrir un fichier")
If Fichier = "Faux" Then Exit Sub
Newname = Environ("userprofile") & "\DeskTop\mon Ruban Perso.ExportedUI"
exportedUIxmlIndenter Fichier, Newname
End Sub
Sub exportedUIxmlIndenter(Fichier$, Newname$) ' recupe le texte complet avec binary acces read
Dim laChaine As String, x, T, DocXml As Object, L1$
'on ouvre le fichier en text lecture binnaire (comme ça on zappe les format udf-8 et autres cochonneries)
x = FreeFile: Open Fichier For Binary Access Read As #x: laChaine = String(LOF(x), " "): Get #x, , laChaine: Close #x
'chaque element est dans une ligne
laChaine = Replace(Replace(Replace(laChaine, "/><", "/>" & vbCrLf & "<"), "/> <", "/>" & vbCrLf & "<"), "><", ">" & vbCrLf & "<")
T = Split(laChaine, vbCrLf): L1 = T(0): T(0) = "" ' on coupe par les sauts de lignes et on enleve la ligne 1 qui n'est pas un root valide(donc lecture xml impossible) et on la memorise on la remettra apres
Set DocXml = CreateObject("MSXML2.DOMDocument") 'on crée un document dom xml
'on load le code(texte du fichier)
If Not DocXml.LoadXML(Join(T)) Then Err.Raise DocXml.parseError.ErrorCode, , DocXml.parseError.reason
DocXml.Save Newname 'on sauve le code par la fonction save(le code sera indenté)
' on reouvre le nouveau fichier et on recupere tout
x = FreeFile: Open Newname For Binary Access Read As #x: laChaine = String(LOF(x), " "): Get #x, , laChaine: Close #x
'on ajoute au debut la ligne de commande application qui était incompatible avec une lecture xml et on ré écrit le fichier
x = FreeFile: Open Newname For Output As #x: Print #x, L1 & vbCrLf & laChaine: Close #x
'maintenant meme en lecture avec blocknote le code est indenté et le fichier reste compatible avec l'import dans excel
MsgBox "le fichier " & Newname & " a été créé"
End Sub