XL 2010 Navigation fichier XML

Twing83

XLDnaute Junior
Bonjour à tous,
Je suis dans la galère pour récupérer dans excel des données d'un fichier XML car je dois remonter et redescendre à partir de la balise "<NumPiste>".
J'arrive à remonter jusqu'à l'attribut "Num" (<CycleTXT Num="1">) mais impossible de récupérer "<DateDebutPhaseActiveSEC>1630928672</DateDebutPhaseActiveSEC>".
De même, impossible de redescendre pour récupérer l'attribut "<IdModele>95</IdModele>".
Mon problème est peut-être un faux problème que vous saurez certainement m'aider à résoudre.
Je précise que mon exemple est très édulcoré par rapport à mon fichier d'origine, l'anonymisation est trop fastidieuse pour qu'il soit exhaustif.
Ci-joint un bout de code VBA pour l'extraction des données sous excel (le principe que j'ai utilisé).
En vous remerciant par avance de votre aide si précieuse par le passé.

XML:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<FichierTXT xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="txt.xsd" xmlns="txt">
<EnteteFichierTXT>
<VersionFormat>2.0.2.0</VersionFormat>
</EnteteFichierTXT>
<CycleTXT Num="1">
    <EnteteCycleTXT>
            <DateDebutPhaseActiveSEC>1630928672</DateDebutPhaseActiveSEC>
        <InfosCpt>
            <CptTXT>
                <Alt>66</Alt>
            </CptTXT>
        </InfosCpt>
    </EnteteCycleTXT>
    <Data Type="48" SousType="1">
    <EntetePistesTXT>
        <NumGno>1</NumGno>
    </EntetePistesTXT>
    </Data>
    <Data Type="304" SousType="1">
        <EntetePistesIdTXT>
            <EntetePistesTXT>
                <NumGno>1</NumGno>
            </EntetePistesTXT>
        </EntetePistesIdTXT>
        <PisteIdTXT>
            <PisteTXT>
                <NumPiste>3374</NumPiste>
            </PisteTXT>
                <ListeModeles>
                    <Modele>
                        <IdModele>95</IdModele>
                    </Modele>
                    <Modele>
                        <IdModele>2</IdModele>
                    </Modele>
                    <Modele>
                        <IdModele>3</IdModele>
                    </Modele>
                </ListeModeles>
        </PisteIdTXT>
    </Data>
</CycleTXT>
</FichierTXT>

Set xmlDoc = CreateObject("Microsoft.XMLDOM")
xmlDoc.async = "false"
xmlDoc.Load (a)

Set oNumPiste = xmlDoc.DocumentElement
ligne = 2
For Each oNumPiste In xmlDoc.getelementsbytagname("CycleTXT/Data/PisteIdTXT/PisteTXT/NumPiste")
Sheets("Feuil2").Cells(ligne, 3) = oNumPiste.nodeTypedValue
Sheets("Feuil2").Cells(ligne, 2) = oNumPiste.ParentNode.ParentNode.ParentNode.ParentNode.getattribute("Num")
ligne = ligne + 1
Next
 

Twing83

XLDnaute Junior
Bonjour Patrick,
Voilà les exemples...
Le fichier Excel est plus complet que le XML, mais il ne faut traiter que les cas que j'ai mentionné plus haut, le reste sera redondant....
Précision importante, la liste des modèles peut être vide ou partiel (0 à 3 maximum).
 

Pièces jointes

  • Test_import_TXT.xlsm
    19.5 KB · Affichages: 3
Dernière édition:

Twing83

XLDnaute Junior
Bonjour Patrick,
J'ai retravaillé l'anonymisation du XML histoire d'avoir quelque chose de cohérent avec le fichier Excel que je cherche à réaliser.
En te remerciant par avance.
 

Pièces jointes

  • Test_import_TXT.xlsm
    19.5 KB · Affichages: 3
  • Full_sample.xml.zip
    119.7 KB · Affichages: 1

patricktoulon

XLDnaute Barbatruc
re
je retrouve pas les données de la ligne 1 de excel dans le xml fourni
je te laisse revoir tout ça
je reviendrais quand ce sera plus clair
ps : je veux pas le tableau je veux la première ligne c'est tout
faites des efforts dans vos demandes ceux qui vous aident ne sont pas dans votre tête
en plus il est costaud le xml
 

Twing83

XLDnaute Junior
Re
Désolé Patrick, je n'avais pas pris en compte que je transformais certaines données lors de l'import :rolleyes:
J'ai revu la tableau Excel, la première ligne est maintenant correcte et dans la deuxième j'ai précisé le numéro de la ligne du XML correspondante (ça peut aider...).
Je confirme qu'il est super costaud le XML et celui-ci est le plus petit que j'ai...
 

Pièces jointes

  • Test_import_TXT.xlsm
    22.6 KB · Affichages: 1

Twing83

XLDnaute Junior
Ça a l'air pas mal du tout 😊
Il faut que je vérifie avec un fichier plus hétérogène mais à première vu ça devrait faire le job.
Un grand merci pour ta patience et ta réactivité.
Je reviens vers toi pour le verdict final...
Merci encore à toi.
 

Twing83

XLDnaute Junior
re,
J'ai testé, ça fonctionne bien mais le code semble ne récupérer que le 1er "NumPiste" par "CycleTXT" or je peux en avoir un nombre certain pour ne pas dire un certain nombre dans chaque CycleTXT...
Le "CycleTXT" sert pour factoriser certain attributs, histoire que le XML ne soit pas trop verbeux...😂
Dans le fichier "Full_sample.xml" il y a 752 NumPiste, le code n'en extrait que 706.
 

patricktoulon

XLDnaute Barbatruc
re
c'est certainement que la structure n'est pas valide ou je n'ai pas vu
je suis parti de cycletxt
si il ya plusieurs numpiste par element cycletxt il va falloir faire pour numpiste ce que j'ai fait pour les 4 ou 3 modele par cycletxt
mais si plusieurs numpiste pour un meme cycletxt alors ton tableau n'est pas bien fait il manque des colonnes
 

Twing83

XLDnaute Junior
Oui il peut y avoir plusieurs numpiste par cycletxt, les modèles sont associés au numpiste, d'où mon besoin exprimer initialement de monter et descendre depuis le numpiste.
Pour mon tableau ce n'est pas gênant que les données du cycletxt se répètent autant de fois que j'ai de numpiste, bien au contraire c'est même ce que je cherche.
Je veux à termes pouvoir filtrer par cycletxt (pour voir toutes les numpiste par cycletxt) et/ou numpiste (pour voir dans quels cycletxt le numpiste est présent).
Dans mon primo code, n'étant pas parvenu à récupérer depuis numpiste autre chose que le Num de cycletxt, j'avais pris l'option de récupérer toute la grappe cycletxt en dehors du tableau et d'effectuer une recherche pour compléter ce dernier. Ça fonctionne mais plus le nombre de numpiste est élevé plus ça prend un temps fou.
Par contre, si c'est possible je souhaite conserver la structure du tableau, elle m'est imposée en aval.
 

Statistiques des forums

Discussions
311 720
Messages
2 081 892
Membres
101 831
dernier inscrit
gillec