Export XML list of lists

Bonjour,

Je me permet de créer ce sujet après avoir poster dans un sujet existant pour une meilleure visibilité et aussi parce que je ne suis pas sûr que le problème soit le même.

J'ai fais pas mal de recherches sur le net et ici même sans trouver de réponse mais quelques pistes.

Voici mon problème, je souhaitais me servir d'excel afin d'éditer des fichiers xml plus confortablement qu'avec un éditeur de txt.

J'ai donc tester avec un fichier XML simple du type

    <parutions>
            <item>
                    <nom>nom de parution</nom>
                    <img>image</img>
            </item>
            <item>
                    <nom>nom de parution</nom>
                    <img>image</img>
            </item>
    [...]
    </parutions>

j'importe donc mon fichier xml via le panneau source xml et crée donc une map automatiquement, map l'ensemble à la feuille excel, importe les données du même fichier xml toujours via le menu développeur, édite les données, exporte mon fichier (menu développeur) et ça marche.

Je me dis cool, passons aux choses sérieuses...

J'importe un autre fichier dans un nouveau classeur qui ressemble à ça :

    <shops>
            <pays name="ALLEMAGNE">
                    <item name="nom du shop" link="lien du shop" lat="latitude" lng="longitude">
                            <adr>adresse du shop</adr>
                            <tel>Tel du shop</tel>
                    </item>
            </pays>
            <pays name="BELGIQUE">
                    <item name="nom du shop" link="" >
                            <adr>adresse du shop</adr>
                            <tel>Tel du shop</tel>
                    </item>
                    <item name="nom du shop" link="lien du shop">
                            <adr>adresse du shop</adr>
                            <tel>Tel du shop</tel>
                    </item>
            </pays>            
            <pays name="ETATS-UNIS">
                    <item name="nom du shop" link="" >
                            <adr>adresse du shop</adr>
                            <tel>Tel du shop</tel>
                    </item>
                    <item name="nom du shop" link="lien du shop">
                            <adr>adresse du shop</adr>
                            <tel>Tel du shop</tel>
                    </item>
                    <main name="nom de la chaine" link="texte lien de la chaine" linkref="lien réel de la chaine">
                            <item name="nom du shop" lat="latitude" lng="longitude">
                            <adr>adresse du shop</adr>
                            <tel>Tel du shop</tel>
                            </item>                                                 
                            <item name="nom du shop" lat="latitude" lng="longitude">
                            <adr>adresse du shop</adr>
                            <tel>Tel du shop</tel>
                            </item>                            
                    </main>
            </pays>
    </shops>
  

Le fichier est un peu plus complexe (attributs, listes dans des listes ...)

Mêmes manips que précédemment, tout se passe bien, j'ai mes données dans un tableau un peu brouillon mais tout de même lisible quand on connait la hiérarchie du fichier xml... Mais grosse déception lors de l'export, excel ne peut exporter un fichier dont la map contient des listes de listes...

J'ai regarder sur le site office et c'est bien mentionné comme une limitation.

Je cherche donc à savoir s'il est possible via un script VBA d'exporter un fichier xml complexe comme celui-ci.

J'ai cherché sur le net et j'ai trouvé des exemples d'export de fichiers xml simples, par exemple :

Function XMLwithNS() As String

    Dim xml As String
    Dim res As XlXmlExportResult

    res = _
      ActiveWorkbook.XmlMaps(mapname).ExportXml(xml)
    If res = xlXmlExportSuccess Then
        XMLwithNS = Replace(xml, _
                      basicroot, fullroot, 1, 1)
    Else
        XMLwithNS = ""
    End If
End Function

La fonction qui modifie uniquement le namespace du fichier, enfin je crois

Sub ExportXMLtoFile()

    Dim bu As String, period As String
    Dim xmlfilename As String
    Dim xml As String

    bu = Range("BU").Value
    period = Range("Period").Value
    xmlfilename = basename + "_" + bu + "_" + _
                          period + ".xml"

    Dim fso As New Scripting.FileSystemObject
    Dim ts As Scripting.TextStream

    ChDir ActiveWorkbook.Path
    MsgBox "Current directory is " & CurDir

    xml = XMLwithNS
    If Len(xml) > 0 Then 'okay
        Set ts = fso.CreateTextFile(xmlfilename)
        ts.Write XMLwithNS
        ts.Close
        MsgBox "Exported XML to file " & xmlfilename
    Else 'XML did not validate
        MsgBox "XMl does not validate; export aborted"
    End If
End Sub

La routine qui exporte le fichier.

Mais ici le xml est basique, et visiblement, c'est excel qui fait le boulot d'export via une map valide...

Est-il possible "d'aider" excel à s'y retrouver dans une map xml complexe à l'aide de VBA ?

Si oui, pouvez-vous m'orienter car je ne connais pas le vba mais je suis familier d'autres langages de programmation.

Merci d'avoir pris le temps de me lire.

Personne ne peut m'aider ?

Rechercher des sujets similaires à "export xml list lists"