Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

Génération Fichier XML par données Excel (en VBA)


Sujet :

XML/XSL et SOAP

  1. #1
    Candidat au Club
    Génération Fichier XML par données Excel (en VBA)
    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 !

  2. #2
    Membre émérite
    Avant la ligne rdr.Parse, ajouter une ligne:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    rdr.putProperty "charset", "iso-8859-1"

    et faire voir.

  3. #3
    Candidat au Club
    toujours pas...
    Citation Envoyé par tsuji Voir le message
    Avant la ligne rdr.Parse, ajouter une ligne:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    rdr.putProperty "charset", "iso-8859-1"

    et faire voir.
    Bonjour,

    Merci pour l'aide mais quand j'exécute, j'ai toujours la même erreur... Toujours sur le .Parse...

    D'autres idées ?

  4. #4
    Membre émérite
    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.
    Que seraient ces deux lignes ?

  5. #5
    Candidat au Club
    Citation Envoyé par tsuji Voir le message
    Que seraient ces deux lignes ?
    il s'agit des dernières lignes se trouvant dans les 2 premières feuilles du classeur... J'ai mis leurs codes en rouge... J'avais effectivement eu le ême souci avec les lignes commencant par ELT, mais le bug avait disparu de lui-même...

    Merci en tout cas pour votre aide...

  6. #6
    Membre émérite
    il s'agit des dernières lignes se trouvant dans les 2 premières feuilles du classeur... J'ai mis leurs codes en rouge... J'avais effectivement eu le ême souci avec les lignes commencant par ELT, mais le bug avait disparu de lui-même...
    Désolé, je n'ai toujours pas compris : lesquelles, exactement ? Ou bien, il n'y a plus de problème ? c'est ça ? Si oui, ok, on laisse.

  7. #7
    Candidat au Club
    Citation Envoyé par tsuji Voir le message
    Désolé, je n'ai toujours pas compris : lesquelles, exactement ? Ou bien, il n'y a plus de problème ? c'est ça ? Si oui, ok, on laisse.
    j'avais mis en rouge dans le fichier joint les lignes qui généraient des erreurs... En les testant une par une et en mettant le texte des cellules dans NotePad ++, j'ai pu remarquer qu'il y avait un espace non reconnu (car à l'origine j'avais récupéré certaines données sur le net..)
    Donc, tout remarche très bien après avoir supprimé ces espaces...
    Merci encore de votre aide !
    Bonne fin de journée !

###raw>template_hook.ano_emploi###