Bonjour à tous,
Je me tourne vers vous car je ne sais pas résoudre mon problème malgré mes recherches intensives sur le net.
J'ai créé il y a quelques mots du code VBA qui permet de récupérer des données de cellules Excel pour en générer un fichier XML encodé en iso-8859-1
Cela marchait très bien jusqu'à hier où 2 lignes supplémentaires ont été ajoutées au fichier source Excel et cela me génère une erreur sur l'enregistrement du fichier XML.
Code VBA : 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 Sub Import_XML() Const XML_NAMESPACE_ATTR As String = "xmlns" Const XML_NAMESPACE_VALUE As String = "https://www.of.moncompteformation.gouv.fr" Dim Doc_XML As Object 'Va nous permettre de créer le XML Dim Root As Object '... de créer la racine du XML Dim Node As Object '... de créer les noeuds Dim Chemin As String 'Chemin de sauvegarde 'pour indenter le code XML Dim rdr As Object Dim wrt As Object Dim oStream As Object 'Création du XML Set Doc_XML = CreateObject("MSXML2.DOMDocument") 'Ajout des données d'encodage/etc... Set Node = Doc_XML.CreateProcessingInstruction("xml", "version=""1.0"" encoding=""iso-8859-1""") 'Ajout des données au fichier Doc_XML.Appendchild Node 'Remise à zéro du noeud Set Node = Nothing 'Création d'une racine Set Root = Doc_XML.CreateElement("lheo") Doc_XML.Appendchild Root Doc_XML.DocumentElement.setAttribute XML_NAMESPACE_ATTR, XML_NAMESPACE_VALUE Set Node = Doc_XML.CreateElement("offres") 'Ajout de la racine au XML Root.Appendchild Node 'génération fichier XML TraiterSessions PreparerDonnees(Doc_XML, Node) '-- Indenter le fichier créé 'Set rdr = CreateObject("MSXML2.SAXXMLReader") 'Set wrt = CreateObject("MSXML2.MXXMLWriter") 'Set oStream = CreateObject("ADODB.STREAM") 'oStream.Open 'Ouverture objet stream.. 'oStream.Charset = "ISO-8859-1" ' 'wrt.indent = True 'wrt.Encoding = "ISO-8859-1" 'wrt.Output = oStream ' "Connexion" de l'objet Writer à l'objet Stream 'Set rdr.contentHandler = wrt 'Set rdr.dtdHandler = wrt 'Set rdr.errorHandler = wrt 'rdr.putProperty "http://xml.org/sax/properties/lexical-handler", wrt 'rdr.putProperty "http://xml.org/sax/properties/declaration-handler", wrt 'Print Doc_XML 'rdr.Parse Doc_XML 'wrt.flush 'Doc_XML.Save ThisWorkbook.Path & "\" & SIRET & "_CatalogueM2i.xml" 'Sauvegarde Chemin = ThisWorkbook.Path & "\ImportXML_EDOF.xml" 'Chemin de sauvegarde + Nom du fichier Doc_XML.Save Chemin 'oStream.SaveToFile ThisWorkbook.Path & "\" & SIRET & "_CatalogueM2i.xml", 2 'Libération des objets 'Set wrt = Nothing 'Set rdr = Nothing 'Set oStream = Nothing Set Node = Nothing Set Root = Nothing Set Doc_XML = Nothing MsgBox "Fin de la génération du fichier XML que vous trouverez à l'emplacement :" & vbCrLf & _ ThisWorkbook.Path & "\" & SIRET & "_CatalogueM2i.xml", vbInformation, "Fin de la génération" End Sub
Initialement, ça bug sur le .Parse (pièce jointe nommée Erreur init.png) et en le mettant en commentaire, l'erreur d’enregistrement (.save) me met l'erreur en pièce jointe nommée erreur.png
Je comprends bien que c'est l'encodage mais pourquoi cela ne marche plus maintenant...
HELP !!
Merci d'avance !
Partager