Tester une condition dans un XML avec VBA
Bonjour,
Voilà je bloque ... j'ai une fonction qui est sensée lire un fichier KML pour lequel le nœud "coordinates" n'est pas toujours présent. Alors je comptais tester le nom du nœud est sauter une ligne s'il n'existe pas ! Mais voilà ça semble et doit être tout "con" mais bon, mon script ne fonctionne pas correctement oui ils affiche les valeurs, mais il ne saute pas la ligne lorsque qu'il n'y en à pas. Je pense en outre que le "For Each" n'est peut être pas très adapté.
Si un âme charitable a une solution je suis preneur.
Code:
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
| Function Coordinates(file As String)
Set XMLDoc = CreateObject("Microsoft.XMLDOM")
XMLDoc.async = False
XMLDoc.Load "R:\PTV\Mes Tests\Test_Macro\" & file
' ------------------------ Service ----------------------------
xpath = "//Placemark"
Dim xxpath As String: xxpath = "Point/coordinates"
Dim nodeName As String
Dim str_oSubNode As String
Sheets("F2").Cells(1, 5) = "Coordonnées MAPS"
ligne = 2
colone = 5
For Each oNode In XMLDoc.SelectNodes(xpath)
For Each oSubNode In oNode.SelectNodes(xxpath)
str_oSubNode = oSubNode.nodeName
If str_oSubNode = "coordinates" Then
Debug.Print "match nodeName : " & oSubNode.nodeName
Sheets("F2").Cells(ligne, colone) = oSubNode.Text
ligne = ligne + 1
Else
Debug.Print ("--------")
Sheets("F2").Cells(ligne, colone) = "-------"
ligne = ligne + 1
End If
Next
Next
Set XMLDoc = Nothing
End Function |