Ouvrir fichier XML

Snoop

XLDnaute Occasionnel
Bonjour tout le monde et le forum,

J'ai un reçu un fichier xml, mais excel n'arrive pas à me l'ouvrir (manque de ligne)

et je n'arrive pas à trouver un logiciel capable de me l'ouvrir comme excel, avec chaque colonne, pour le manipuler en tbx croisé

Merci pour votre aide !

Bonne journée:D
 

MichelXld

XLDnaute Barbatruc
Re : Ouvrir fichier XML

bonsoir


Combien de lignes contient ton fichier ?

Si le fichier est si volumineux, est ce que le TCD va pouvoir gérer toutes ces lignes ?


Sinon, une solution pourrait consister à lire le fichier xml par macro ligne par ligne et importer les données dans une table gérable par le TCD (plusieurs feuilles Excel, Une base Access...)


bonne soirée
michel
Microsoft Excel MVP
 

Snoop

XLDnaute Occasionnel
Re : Ouvrir fichier XML

Bonjour,
Le fichier a 480 000 lignes, une colonne principale avec 12 caractéristiques (12 * 40 000)
il me faut juste 2 caractéristiques.

Mais je ne sais pas comment faire en macro, pour récupérer les informations, je pensais que excel pouvait peut etre me l'ouvrir avec l'importateur de donnée 'msquery ?)

Merci pour ta reponse
 

MichelXld

XLDnaute Barbatruc
Re : Ouvrir fichier XML

bonjour


Quelle version d'Excel utilises tu ?
Normalement le mappage est intégré à Excel, à partir de la version 2003.
Le schéma de ton fichier xml est valide ?


Voici des exemples de code VBa qui extraient le contenu d'un fichier XM, mais sans voir ton fichier xml ça ne sera peut etre pas adapté.

Code:
Option Explicit
Dim oDoc As MSXML2.DOMDocument

Private Sub CommandButton1_Click()
    Set oDoc = New DOMDocument
    oDoc.async = False
    oDoc.Load "C:\Documents and Settings\michel\dossier\leFichier.xml"
    
    ExtractionXML oDoc.documentElement
End Sub
 
Private Function ExtractionXML(ByRef oElem As MSXML2.IXMLDOMNode)
    Dim oNodeList As MSXML2.IXMLDOMNodeList
    Dim i As Long
      
    Select Case oElem.nodeType
        Case MSXML2.NODE_ELEMENT 'type Element
        Debug.Print oElem.nodeName & " (" & GetAttributes(oElem) & ")"
        
        Case MSXML2.NODE_TEXT 'type texte
        Debug.Print "Text: " & oElem.nodeValue
        
        Case MSXML2.NODE_CDATA_SECTION 'type Cdata
        Debug.Print "CDATA: " & oElem.nodeValue
        
        Case Else
        Debug.Print oElem.nodeType & ": " & oElem.nodeName
    End Select
      
    'boucle récursive pour ajouter tous les noeuds enfants
    Set oNodeList = oElem.childNodes
    
    For i = 0 To oNodeList.Length - 1
        ExtractionXML oNodeList.Item(i)
    Next i
    '----------------------------------------------------
End Function

Private Function GetAttributes(ByRef oElm As MSXML2.IXMLDOMNode) As String
    Dim sAttr As String
    Dim i As Long
    
    sAttr = ""
    
    For i = 0 To oElm.Attributes.Length - 1 'boucle sur tous les attributs
        sAttr = sAttr & oElm.Attributes.Item(i).nodeName & "='" & _
        oElm.Attributes.Item(i).nodeValue & "' "
    Next i
    
    GetAttributes = sAttr
End Function




deuxième exemple

Code:
Sub Test()
    Dim xmlDoc As DOMDocument
    Dim root As IXMLDOMElement
       
    Set xmlDoc = New DOMDocument
    
    xmlDoc.async = False
    xmlDoc.Load ThisWorkbook.Path & "\leFichier.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


bonne journée
michel
Microsoft Excel MVP
 

Discussions similaires

Statistiques des forums

Discussions
312 438
Messages
2 088 410
Membres
103 845
dernier inscrit
anasabir2024