Bonjour,

1) j'aimerais savoir s'il existait un tutoriel sur l'extraction .xml vers excel ou bien un document qui répondra ou aidera à répondre à ma question suivante.

2 ) J'ai un gros fichier .xml qui se présente sous cette structure :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0"?>
<lists>
<list
   path="svn://Machine/Repertoire">
[...]
<entry
   kind="file">
<name>trunk/Repertoire/fichier.ext</name>
<size>13</size>
<commit
   revision="10">
<author>admin</author>
<date>2008-12-12T14:39:23.921875Z</date>
</commit>
<lock>
<token>opaquelocktoken:194189eb-5506-6240-97a2-b72c0a435c08</token>
<owner>admin</owner>
<created>2008-12-12T14:39:23.921875Z</created>
</lock>
</entry>
[...]
</list>
</lists>
Afin d'extraire les champs qui m'interressaient (kind et name), j'ai réussi a créer un bout de code avec des exemples que j'ai puisé ici et là, que voici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Private Sub ImportBase_Click()
 
Dim sPath As String
Dim xmlDoc As Variant, a As Variant
Dim oElement As Object
Dim Ligne As Integer
 
sPath = Environ("userprofile")
 
 
    ChDrive "C:"    ' Choix du lecteur
    ChDir sPath    'Choix du répertoire
    a = Application.GetOpenFilename("fichier xml (*.xml), *.xml", _
                                    , "Sélection du fichier Liste.xml", , false)
 
    Set xmlDoc = CreateObject("Microsoft.XMLDOM")
    xmlDoc.async = "false" 
    xmlDoc.Load (a)
 
 
Set oElement = xmlDoc.documentElement
Ligne = 2
    For Each oElement In xmlDoc.getElementsByTagName("entry")
        Sheets("Feuil1").Cells(Ligne, 1) = oElement.getAttribute("kind")
        Ligne = Ligne + 1
    Next
Ligne = 2
    For Each oElement In xmlDoc.getElementsByTagName("name")
        Sheets("Feuil1").Cells(Ligne, 2) = oElement.nodeTypedValue
        Ligne = Ligne + 1
    Next
 
End Sub
Je pense qu'il est possible d'optimiser le temps de traitement en ne faisant qu'une seule boucle, mais je ne sais pas trop comment m'y prendre

Merci d'avance.


Note : je vais essayer de comprendre ce document : http://www.w3schools.com/dom/dom_nodes_get.asp