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é.
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
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