J'ai un fichier XML qui doit me revenir régulièrement. Dans ce fichier,
seules quelques données m'intéresse. J'ai cherché à lire le fichier XML
pour ne faire ressortir que certaines données mais... je n'y suis pas
parvenue. J'arrive soit à importer sur Excel la liste des balises du
fichier, soit à importer les valeurs de toutes les données du fichier
mais sans les balises et donc sans savoir quoi correspond à quelle
donnée.
J'ai ajouté la référence à "Microsoft XML, v3.0".
J'ai essayé ce script :
Sub ReadXMLFileXMLIndent()
Dim oXML As MSXML2.DOMDocument
Dim oNode As MSXML2.IXMLDOMNode
Set oXML = New MSXML2.DOMDocument
oXML.async = False
oXML.Load "Z:\Matrices\Compta\annexe.XML"
i = 1
For Each oNode In oXML.DocumentElement.ChildNodes
For Each oSubNode In oNode.ChildNodes
Cells(i, 1).Value = oSubNode.BaseName
Cells(i, 2).Value = oSubNode.Text
i = i + 1
Next
Next
End Sub
Mais cela ne m'importe rien du tout... Il doit également probablement
y'avoir une solution pour importer plus directement la valeur d'une
donnée.
Ce lien me donne la manip à faire manuellement. Mais je cherche à pouvoir récupérer certaines données d'un fichier XML en VBA.
Lorsque j'ai tenté au tout début d'importer un fichier XML avec enregistrement de macro VBA pour voir le résultat je n'ai malheureusement pas obtenu grand chose...
Ce lien me donne la manip à faire manuellement. Mais je cherche à
pouvoir récupérer certaines données d'un fichier XML en VBA.
Lorsque j'ai tenté au tout début d'importer un fichier XML avec
enregistrement de macro VBA pour voir le résultat je n'ai
malheureusement pas obtenu grand chose...
Ce lien me donne la manip à faire manuellement. Mais je cherche à pouvoir récupérer certaines données d'un fichier XML en VBA.
Lorsque j'ai tenté au tout début d'importer un fichier XML avec enregistrement de macro VBA pour voir le résultat je n'ai malheureusement pas obtenu grand chose...
@+ HD
MichD
Qu'est-ce qui se passe lorsque tu ouvres ton fichier XML ? Les données ne s'affichent pas ?
Tu peux créer un fichier Excel sans modifier le fichier XML original. Pour ce faire, ce type de macro. La feuille de ton fichier .xml va se retrouve dans un classeur "standard". À partir de ce dernier, tu peux extraire toutes les données que tu désires... Où est le problème?
'-------------------------------------- Sub Test() 'En adaptant le nom des objets With workbooks("Classeur1.xml") With Worksheets("Feuil1") .Copy End With End With
End Sub '--------------------------------------
Qu'est-ce qui se passe lorsque tu ouvres ton fichier XML ? Les données ne
s'affichent pas ?
Tu peux créer un fichier Excel sans modifier le fichier XML original. Pour
ce faire, ce type de macro. La feuille de ton fichier .xml va se retrouve
dans un classeur "standard". À partir de ce dernier, tu peux extraire toutes
les données que tu désires... Où est le problème?
'--------------------------------------
Sub Test()
'En adaptant le nom des objets
With workbooks("Classeur1.xml")
With Worksheets("Feuil1")
.Copy
End With
End With
Qu'est-ce qui se passe lorsque tu ouvres ton fichier XML ? Les données ne s'affichent pas ?
Tu peux créer un fichier Excel sans modifier le fichier XML original. Pour ce faire, ce type de macro. La feuille de ton fichier .xml va se retrouve dans un classeur "standard". À partir de ce dernier, tu peux extraire toutes les données que tu désires... Où est le problème?
'-------------------------------------- Sub Test() 'En adaptant le nom des objets With workbooks("Classeur1.xml") With Worksheets("Feuil1") .Copy End With End With
End Sub '--------------------------------------
db
Le 26/11/2014 11:49, HD a écrit :
Bonjour,
J'ai un fichier XML qui doit me revenir régulièrement. Dans ce fichier, seules quelques données m'intéresse. J'ai cherché à lire le fichier XML pour ne faire ressortir que certaines données mais... je n'y suis pas parvenue. J'arrive soit à importer sur Excel la liste des balises du fichier, soit à importer les valeurs de toutes les données du fichier mais sans les balises et donc sans savoir quoi correspond à quelle donnée. Je cherche à récupérer les valeurs des données: TOTAL_DETTES__1_AN TOTAL_DETTES_1_AN_5 TOTAL_DETTES__5_ANS
Bonjour,
En fait, ces trois infos sont des attributs du noeud <ANXCV>.
Pour les récupérer, il faut faire quelque chose du genre :
Dim oXML As MSXML2.DOMDocument Dim td1 as double, td1s as double, td5 as double Set oXML = New MSXML2.DOMDocument oXML.async = False oXML.Load "D:test.XML" td1=oXML.getElementsByTagName("ANXCV").Item(0).Attributes.getNamedItem("TOTAL_DETTES__1_AN").NodeValue td1s=oXML.getElementsByTagName("ANXCV").Item(0).Attributes.getNamedItem("TOTAL_DETTES_1_AN_S").NodeValue td5=oXML.getElementsByTagName("ANXCV").Item(0).Attributes.getNamedItem("TOTAL_DETTES__5_ANS").NodeValue
Set oXml=nothing
db
Le 26/11/2014 11:49, HD a écrit :
Bonjour,
J'ai un fichier XML qui doit me revenir régulièrement. Dans ce fichier,
seules quelques données m'intéresse. J'ai cherché à lire le fichier XML
pour ne faire ressortir que certaines données mais... je n'y suis pas
parvenue. J'arrive soit à importer sur Excel la liste des balises du
fichier, soit à importer les valeurs de toutes les données du fichier
mais sans les balises et donc sans savoir quoi correspond à quelle donnée.
Je cherche à récupérer les valeurs des données:
TOTAL_DETTES__1_AN
TOTAL_DETTES_1_AN_5
TOTAL_DETTES__5_ANS
Bonjour,
En fait, ces trois infos sont des attributs du noeud <ANXCV>.
Pour les récupérer, il faut faire quelque chose du genre :
Dim oXML As MSXML2.DOMDocument
Dim td1 as double, td1s as double, td5 as double
Set oXML = New MSXML2.DOMDocument
oXML.async = False
oXML.Load "D:test.XML"
td1=oXML.getElementsByTagName("ANXCV").Item(0).Attributes.getNamedItem("TOTAL_DETTES__1_AN").NodeValue
td1s=oXML.getElementsByTagName("ANXCV").Item(0).Attributes.getNamedItem("TOTAL_DETTES_1_AN_S").NodeValue
td5=oXML.getElementsByTagName("ANXCV").Item(0).Attributes.getNamedItem("TOTAL_DETTES__5_ANS").NodeValue
J'ai un fichier XML qui doit me revenir régulièrement. Dans ce fichier, seules quelques données m'intéresse. J'ai cherché à lire le fichier XML pour ne faire ressortir que certaines données mais... je n'y suis pas parvenue. J'arrive soit à importer sur Excel la liste des balises du fichier, soit à importer les valeurs de toutes les données du fichier mais sans les balises et donc sans savoir quoi correspond à quelle donnée. Je cherche à récupérer les valeurs des données: TOTAL_DETTES__1_AN TOTAL_DETTES_1_AN_5 TOTAL_DETTES__5_ANS
Bonjour,
En fait, ces trois infos sont des attributs du noeud <ANXCV>.
Pour les récupérer, il faut faire quelque chose du genre :
Dim oXML As MSXML2.DOMDocument Dim td1 as double, td1s as double, td5 as double Set oXML = New MSXML2.DOMDocument oXML.async = False oXML.Load "D:test.XML" td1=oXML.getElementsByTagName("ANXCV").Item(0).Attributes.getNamedItem("TOTAL_DETTES__1_AN").NodeValue td1s=oXML.getElementsByTagName("ANXCV").Item(0).Attributes.getNamedItem("TOTAL_DETTES_1_AN_S").NodeValue td5=oXML.getElementsByTagName("ANXCV").Item(0).Attributes.getNamedItem("TOTAL_DETTES__5_ANS").NodeValue
Set oXml=nothing
db
HD
Qu'est-ce qui se passe lorsque tu ouvres ton fichier XML ? Les données ne s'affichent pas ?
Tu peux créer un fichier Excel sans modifier le fichier XML original. Pour ce faire, ce type de macro. La feuille de ton fichier .xml va se retrouve dans un classeur "standard". À partir de ce dernier, tu peux extraire toutes les données que tu désires... Où est le problème?
Si j'essaie d'ouvrir le fichier XML directement via Excel, il me propose: 1) en tant que tableau XML 2) en tant que classeur en lecture seule 3) utiliser le volet Office Source XML
La solution 1 ne m'intéresse pas puisque cela me récupère toutes les données en vrac sans que je puisse savoir exactement où se trouve mes données.
La solution 2 pourrait m'intéresser... par contre tout est récupéré sur deux lignes de plusieurs centaines de colonnes (lorsque j'utilise un fichier XML complet). C'est envisageable. L'ouverture se fait via Workbooks.Open Filename:=monFicXML. Y'a-t-il moyen d'ouvrir le fichier non en 2 lignes mais en 2 colonnes ? Si les données sont ouvertes en 2 lignes (avec autant de colonnes que de données) J'ai peur d'être un jour limité par le nombre de données qui ne doit (avec xlsb) pas dépasser les 16384...
La solution 3 sera bien plus propre car je peux sélectionner les données que je veux pour les placer sur les cellules que je souhaite et faire apparaître le nom de la variable... par contre, je ne sais malheureusement pas le manipuler en VBA. Pour l'ouvrir: Workbooks.OpenXML Filename:=MonFicXML, LoadOption:=xlXmlLoadMapXml Puis... pour placer les cellules là je ne sais pas...
Sinon, je pensais qu'il était directement possible d'attaquer un fichier XML en VBA pour ne récupérer que quelques données ?
@+ HD
Qu'est-ce qui se passe lorsque tu ouvres ton fichier XML ? Les données
ne s'affichent pas ?
Tu peux créer un fichier Excel sans modifier le fichier XML original.
Pour ce faire, ce type de macro. La feuille de ton fichier .xml va se
retrouve dans un classeur "standard". À partir de ce dernier, tu peux
extraire toutes les données que tu désires... Où est le problème?
Si j'essaie d'ouvrir le fichier XML directement via Excel, il me
propose:
1) en tant que tableau XML
2) en tant que classeur en lecture seule
3) utiliser le volet Office Source XML
La solution 1 ne m'intéresse pas puisque cela me récupère toutes les
données en vrac sans que je puisse savoir exactement où se trouve mes
données.
La solution 2 pourrait m'intéresser... par contre tout est récupéré sur
deux lignes de plusieurs centaines de colonnes (lorsque j'utilise un
fichier XML complet). C'est envisageable. L'ouverture se fait via
Workbooks.Open Filename:=monFicXML. Y'a-t-il moyen d'ouvrir le fichier
non en 2 lignes mais en 2 colonnes ? Si les données sont ouvertes en 2
lignes (avec autant de colonnes que de données) J'ai peur d'être un jour
limité par le nombre de données qui ne doit (avec xlsb) pas dépasser les
16384...
La solution 3 sera bien plus propre car je peux sélectionner les données
que je veux pour les placer sur les cellules que je souhaite et faire
apparaître le nom de la variable... par contre, je ne sais
malheureusement pas le manipuler en VBA.
Pour l'ouvrir:
Workbooks.OpenXML Filename:=MonFicXML, LoadOption:=xlXmlLoadMapXml
Puis... pour placer les cellules là je ne sais pas...
Sinon, je pensais qu'il était directement possible d'attaquer un fichier
XML en VBA pour ne récupérer que quelques données ?
Qu'est-ce qui se passe lorsque tu ouvres ton fichier XML ? Les données ne s'affichent pas ?
Tu peux créer un fichier Excel sans modifier le fichier XML original. Pour ce faire, ce type de macro. La feuille de ton fichier .xml va se retrouve dans un classeur "standard". À partir de ce dernier, tu peux extraire toutes les données que tu désires... Où est le problème?
Si j'essaie d'ouvrir le fichier XML directement via Excel, il me propose: 1) en tant que tableau XML 2) en tant que classeur en lecture seule 3) utiliser le volet Office Source XML
La solution 1 ne m'intéresse pas puisque cela me récupère toutes les données en vrac sans que je puisse savoir exactement où se trouve mes données.
La solution 2 pourrait m'intéresser... par contre tout est récupéré sur deux lignes de plusieurs centaines de colonnes (lorsque j'utilise un fichier XML complet). C'est envisageable. L'ouverture se fait via Workbooks.Open Filename:=monFicXML. Y'a-t-il moyen d'ouvrir le fichier non en 2 lignes mais en 2 colonnes ? Si les données sont ouvertes en 2 lignes (avec autant de colonnes que de données) J'ai peur d'être un jour limité par le nombre de données qui ne doit (avec xlsb) pas dépasser les 16384...
La solution 3 sera bien plus propre car je peux sélectionner les données que je veux pour les placer sur les cellules que je souhaite et faire apparaître le nom de la variable... par contre, je ne sais malheureusement pas le manipuler en VBA. Pour l'ouvrir: Workbooks.OpenXML Filename:=MonFicXML, LoadOption:=xlXmlLoadMapXml Puis... pour placer les cellules là je ne sais pas...
Sinon, je pensais qu'il était directement possible d'attaquer un fichier XML en VBA pour ne récupérer que quelques données ?
@+ HD
db
En version longue : tous les attributs et leurs valeurs affichés dans la feuille :
Dim oXML As MSXML2.DOMDocument, i As Byte Set oXML = New MSXML2.DOMDocument Dim oNode As MSXML2.IXMLDOMNode
oXML.async = False oXML.Load "...XML" Set oNode = oXML.getElementsByTagName("ANXCV").Item(0) For i = 1 To oNode.Attributes.Length Cells(i, 1) = oNode.Attributes.Item(i - 1).BaseName Cells(i, 2) = oNode.Attributes.Item(i - 1).NodeValue Next
Set oNode = Nothing Set oXML = Nothing
db
En version longue : tous les attributs et leurs valeurs affichés dans la
feuille :
Dim oXML As MSXML2.DOMDocument, i As Byte
Set oXML = New MSXML2.DOMDocument
Dim oNode As MSXML2.IXMLDOMNode
oXML.async = False
oXML.Load "...XML"
Set oNode = oXML.getElementsByTagName("ANXCV").Item(0)
For i = 1 To oNode.Attributes.Length
Cells(i, 1) = oNode.Attributes.Item(i - 1).BaseName
Cells(i, 2) = oNode.Attributes.Item(i - 1).NodeValue
Next