IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 3
    Points
    3
    Par défaut 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 !
    Images attachées Images attachées   

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    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
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 3
    Points
    3
    Par défaut 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 Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    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
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    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...
    Fichiers attachés Fichiers attachés

  6. #6
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    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
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    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 !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Codage pour extraire les données d'un fichier XML par du HTML
    Par Douxnuts dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 30/12/2018, 20h17
  2. Réponses: 3
    Dernier message: 14/12/2018, 14h37
  3. Réponses: 10
    Dernier message: 13/12/2018, 11h33
  4. [XL-2010] Importer des données de plusieurs fichiers dans une feuille excel en VBA
    Par Alibel dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/10/2013, 16h16
  5. [DOM] Erreur lors du parsing d'un fichier XML par l'API DOM
    Par patricetoan dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 26/09/2005, 13h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo