Bonjour à tous,


Je rencontre des difficultés actuellement pour ouvrir un fichier xml, mon pb est le suivant :

je dois à partir d'excel traiter + sieurs fichiers "xml", jusqu'a présent tous se passe bien je charge mon document , je l'ouvre et je récupère les données dans les balises.
Mais le probleme est qu' a ma 3eme ligne il y a une ligne qui fait que je n'arrive pas exploiter mon fichier xml.!!!

si je supprime cette ligne manuellement et que j'enregistre mon fichier alors tous se passe corectement par contre si la ligne n'est pas suprimer le fichier ne peut pas etre exploiter.

Quelqu'un aurait-il une solution pour supprimer la 3eme ligne automatiquement de mon fichier XML, pour qu'il puisse etre exploitable????
Merci.

En VBA

je vous envois le code qui permet d'exploiter le fichier xml.



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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
Sub IMPORT_XML_File()
 
'Déclaration des  Variables et des objets  DOMXML
 
Dim ParsDoc As MSXML2.DOMDocument
 
Dim ListeEnfants_de_md As MSXML2.IXMLDOMNodeList
Dim ListeEnfants_de_mi As MSXML2.IXMLDOMNodeList
Dim ListeEnfants_de_mv As MSXML2.IXMLDOMNodeList
Dim Liste_md As MSXML2.IXMLDOMNodeList
 
Dim Noeud_mi As MSXML2.IXMLDOMNode
Dim Noeud_mts As MSXML2.IXMLDOMNode
Dim Noeud_gp As MSXML2.IXMLDOMNode
Dim Noeud_mt As MSXML2.IXMLDOMNode
Dim Noeud_mv As MSXML2.IXMLDOMNode
Dim Noeud_moid As MSXML2.IXMLDOMNode
Dim Noeud_r As MSXML2.IXMLDOMNode
Dim Noeud_md As MSXML2.IXMLDOMNode
 
'**********noeud de la ligne 3 à supprimer...***************
Dim Noeud_line3   As String
'Dim Noeud3 As MSXML2.IXMLDOMDocumentType
Dim Noeud3 As MSXML2.IXMLDOMNotation
 
Dim N3 As MSXML2.IXMLDOMNode
'*****************************************
 
Dim Enfants_de_md As MSXML2.IXMLDOMNode
Dim Enfants_de_mi As MSXML2.IXMLDOMNode
Dim Enfants_de_mv As MSXML2.IXMLDOMNode
 
Dim racine_mdc As MSXML2.IXMLDOMNode
 
Dim Objet_Erreur As MSXML2.IXMLDOMParseError
Dim intI As Integer
Dim Nom_moid As String
Dim file_xml As String
Dim objet_node As String
Dim data As String
 
'permet de ne pas voir se qui se passe
Application.ScreenUpdating = False
 
'Pour nettoyer les cellules à chaque renouvellement du programme
'Worksheets("IMPORT_XML").Activate
'Cells.ClearContents
 
file_xml = Worksheets("Sheet1").Cells(15, 5).Value
' au dessus il y a la celluel qui donne le chemin d'acces à mon fichier xml
' mettre en commentaire la ligne du dessus, puis mettre en argument de la fonction.
 
'Initialisation du Parseur
'la fonction permet de faire la référence entre la variable et le DOC_XML
Set ParsDoc = New MSXML2.DOMDocument
 
'Chargement du Document de manière synchrone
ParsDoc.async = False
 
'on charge le document en mémoire
 
If ParsDoc.Load(file_xml) Then
 
        MsgBox "Document XML correctement chargé"
    Else
 
'****************************supression de la ligne 3 des XML Files...*************************
'Noeud_line3 = ParsDoc.Xml
'MsgBox (Noeud_line3)
'MsgBox (objet_node)
 'data = "<!DOCTYPE mdc SYSTEM "MeasDataCollection.dtd">"
 
 'Set Noeud3 = ParsDoc.createCDATASection(<![DOCTYPE mdc SYSTEM ["MeasDataCollection.dtd"]]>)
 
 'data = Noeud3.baseName
 
 'Set Noeud3 = ParsDoc.doctype
 
  'data = Noeud3.nodeTypedValue
 
'MsgBox (data)
'********************************************************************************************
 
          MsgBox "Erreur de lecture du document XML"
 
'                           ****************************
'    ******************Partie concernant la gestion des erreurs**********************
 
   'instancier le fichier xml pour la gestion des erreurs
Set Objet_Erreur = ParsDoc.parseError
 
' contient le code de l'erreur da la dernière erreur d'analyse, en lecture seule.
code = Objet_Erreur.errorCode
MsgBox (code)
 
'fournit une explication à propos de l'erreur, en lecture seule.
 raison = Objet_Erreur.reason
 MsgBox (raison)
 
'contient la position du fichier absolue où l'erreur s'est produite, en lecture seule.
position_fichier = Objet_Erreur.filepos
MsgBox (position)
 
'spécifie le numéro de la ligne contenant l'erreur, en lecture seule.
 position_ligne = Objet_Erreur.Line
 MsgBox (position_ligne)
 
 'contient la position du caractère à l'intérieur de la ligne où l'erreur s'est produite, en lecture seule.
 Position_carac_ligne = Objet_Erreur.linepos
 MsgBox (Position_carac_ligne)
 
 'retourne le texte complet de la ligne contenant l'erreur, en lecture seule.
 chaine = Objet_Erreur.srcText
 MsgBox (chaine)
 
 'contient l'adresse URL du document XML contenant la dernière erreur, en lecture seule.
 adr_url = Objet_Erreur.URL
 MsgBox (adr_url)
 
 '                      ****************************************
 
    End If
 
Application.DisplayAlerts = True
Application.ScreenUpdating = True
 
end sub
debut de mon fichier XML

Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="MeasDataCollection.xsl"?>
<!DOCTYPE mdc SYSTEM "MeasDataCollection.dtd">
**************la ligne a suprimer ce trouve au dessus***********