Autres [XML] Importer fichier XML dans Excel (uniquement certaines colonnes)

StagExcelle

XLDnaute Junior
Bonjour,

Dans le cadre de mon stage, je dois importer un fichier XML puis le rendre plus lisible
Je voudrais le faire par VBA.
Les recherches que j'ai faites sur internet m'ont dirigé sur cette piste : CreateObject("Microsoft.XMLDOM"), XPath SelecNodes etc..
Malheureusement, je ne comprends pas bien ce langage.

Actuellement, j'utilise cette macro construite avec ce que j'ai trouvé sur internet
VB:
Sub xEssai_Macro_XML()
'Déclarations des variables
Dim fd As Office.FileDialog
Dim strFile As String, WBK As Workbook
'Choisir le fichier avec une boite de dialogue
Set fd = Application.FileDialog(msoFileDialogFilePicker)
With fd
    .Filters.Clear
    .Filters.Add "FICHIER XML", "*.xml", 1
    .Title = "Choisir le fichier XML"
    .AllowMultiSelect = False
    If .Show = True Then
    strFile = .SelectedItems(1)
    End If
End With
Application.ScreenUpdating = False
'Importer le fichier dans un tableau dans Excel
strXML_Fic = strFile
Workbooks.OpenXML Filename:=strXML_Fic, LoadOption:=xlXmlLoadImportToList
End Sub
Mais cette macro importe tout le fichier XML alors que le besoin serait de n'importer que certaines colonnes.

Je vous joins un fichier XML dans le fichier ZIP attaché.

Le fichier XML exemple génère une erreur quand on l'importe manuellement ou par macro.
Je ne sais pas pourquoi.

Merci pour l'aide et explications que vous voudrez bien m'apporter.
 

Pièces jointes

  • orderv6.zip
    40.5 KB · Affichages: 13

StagExcelle

XLDnaute Junior
J'ai aussi essayé avec l'outil PowerQuery
Mais cela donne ce résultat
exemple1.png

Je ne sais pas quelles opérations faire dans PowerQuery pour ne pas avoir
en colonne B.
 
Dernière édition:

StagExcelle

XLDnaute Junior
Bonjour Etoto

Merci de ton intérêt pour ma question.

Je viens de m'inscrire sur le forum Excel-Download parce ma question est liée à Excel.

Et en faisant des recherches sur le forum, j'ai vu qu'il y avait des discussions qui parle d'XML et Excel.

Mais je n'ai pas su les adapter à mon besoin.

C'est pour cela que j'ai posé ma question.
 

Etoto

XLDnaute Barbatruc
Bonjour Etoto

Merci de ton intérêt pour ma question.

Je viens de m'inscrire sur le forum Excel-Download parce ma question est liée à Excel.

Et en faisant des recherches sur le forum, j'ai vu qu'il y avait des discussions qui parle d'XML et Excel.

Mais je n'ai pas su les adapter à mon besoin.

C'est pour cela que j'ai posé ma question.
Ok,

Normalement je ne devrais pas conseiller un forum concurrent mais ils sont meilleurs pour ça, nous c'est plus le VBA et les formules, c'est pour cela que je suis dans les deux forums.
 
Dernière édition:

StagExcelle

XLDnaute Junior
Quand j'ouvre dans Powerquery, ca donne l'image de mon message #2

Je ne sais pas quelle manipulation faire pour ne pas avoir Table (mais le contenu)

Sinon, j'ai trouvé de code VBA dans le forum
Mais je ne sais pas aller plus loin avec

Ca mets tout dans la même cellule, ligne par ligne.

Code VBA avec le langage XML
VB:
Sub Test()
    Dim xmlDoc As DOMDocument
    Dim root As IXMLDOMElement
    Set xmlDoc = New DOMDocument
    xmlDoc.async = False
    xmlDoc.Load ThisWorkbook.Path & "\order.exemple.xml"
    Set root = xmlDoc.DocumentElement
        Cells(1, 1) = root.BaseName
        j = 1
    BrowseChildNodes root
    j = 0
End Sub
 
Private Sub BrowseChildNodes(root_node As IXMLDOMNode)
    Dim i As Long
    For i = 0 To root_node.ChildNodes.Length - 1
        If root_node.ChildNodes.Item(i).NodeType <> 3 Then
            j = j + 1
            Cells(j, 1) = root_node.ChildNodes.Item(i).BaseName & "/" & _
                root_node.ChildNodes.Item(i).Text
        End If
        BrowseChildNodes root_node.ChildNodes(i)
    Next
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
311 710
Messages
2 081 781
Membres
101 817
dernier inscrit
carvajal