Bonjour,
je suis en train de me lancer dans la lecture de fichiers XML en VBA.
Pour cela, je me base de ce Tutoriel bien connu : https://baptiste-wicht.developpez.co...ipt/xml/xpath/
Petit bémol sur ce tuto, les variables ne sont pas explicitement déclarées. J'y ai donc remédié comme suit :
J'ai juste une erreur "438" au moment de l'exécution du bloc IF enfants.lenght > 0 Then....
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 Option Explicit Sub TutoBaptisteWICHT2() Dim xmlDoc As Object Dim personneElement, enfantElement As Object Dim enfants As Object Dim nom, prenom, etat, age As String Dim text, nomEnfant, prenomEnfant As String Set xmlDoc = CreateObject("Microsoft.XMLDOM") xmlDoc.Async = "false" xmlDoc.Load (ThisWorkbook.Path & "\personnes.xml") For Each personneElement In xmlDoc.SelectNodes("/personnes/personne") 'on recupère les éléments sur la personne nom = personneElement.SelectSingleNode("nom").text prenom = personneElement.SelectSingleNode("prenom").text etat = personneElement.SelectSingleNode("etat").text age = personneElement.getAttribute("age") 'MsgBox ("Nom : " & nom & vbCrLf & _ '"Prenom : " & prenom & vbCrLf & _ ' "Etat civil : " & etat & vbCrLf & _ ' "Age : " & age) Set enfants = personneElement.SelectNodes("enfants/enfant") 'S'il y a des enfants If enfants.lenght > 0 Then text = prenom & " " & nom & " a des enfants :" 'On boucle sur tous les enfants For Each enfantElement In enfants nomEnfant = enfantElement.SelectSingleNode("nom").text prenomEnfant = enfantElement.SelectSingleNode("prenom").text text = text & vbCrLf & "-" & prenomEnfant & " " & nomEnfant MsgBox (text) Next Else MsgBox (prenom & " " & nom & " n'a pas d'enfants") End If Next Set xmlDoc = Nothing End Sub
Si j'enlève ce bloc, pas de soucis...
J'ai déclaré "enfants" comme une variable OBJECT. est-ce bien la bonne méthode ?
Merci d'avance pour votre aide !
Partager