Gestion de fichiers XML

Bonjour à tous,

voilà mon problème.

J'ai un logiciel externe qui me génère des fichiers type XML, excel possède bien un module pour importer ou exporter des fichiers XML mais la maps ne correspond pas.

N'ayant aucune compétence dans le domaine je voudrais dans un premier temps savoir gérer ces fichiers.

Voici en pieces jointes un exemple de fichier que je dois importer. Le but étant d'importer une dizaine de fichiers chacun sur une feuille differente puis de les concatener pour les exporter en un seul fichier XML.

Merci d'avance pour vos aides

806h113b.zip (36.21 Ko)

Salut le forum

Bienvenue Boudoula comme nouveau membres.

Pour débuter : Comment faire pour importer et exporter XML dans Excel

Mytå

Bonsoir,

merci pour le lien mais celà ne fonctionne pas avec mes fichiers, auriez vous d'autres soluces à me proposer ???

Re le forum

Boudoula, test la macro suivante - Chemin du fichier (URL) à adapter.

Sub ImporterFichierXML()
    Dim XM As XmlMap

    'Importe le fichier dans la cellule B1 de la Feuil3.
    ThisWorkbook.XmlImport _
        URL:="D:\Fichers\111201_curatif_1.xml", _
        ImportMap:=Nothing, _
        Overwrite:=True, _
        Destination:=Worksheets("Feuil1").Range("$B$1")

    'Définit le mappage qui vient d'être ajouté.
    'ThisWorkbook.XmlMaps.Count correspond au dernier xml mappé dans le classeur
    Set XM = ThisWorkbook.XmlMaps(ThisWorkbook.XmlMaps.Count)

    MsgBox "Import terminé" & vbCrLf & _
        XM.RootElementName & vbCrLf & _
        XM.Name & vbCrLf & _
        XM.DataBinding.SourceUrl

End Sub

Mytå

bonsoir,

ça me dit DTD interdite.

merci d'avance

Re le forum

Pourtant cela fonction très bien sous Excel 2007.

Mytå

je suis sous 2010 en anglais

Re le forum

Ce que je trouve vraiment abusé, c'est que sous Excel 2007, lorsque je veux ouvrir le fichier en tant

que tableur, il me dit bien que la source Xml ne fait pas référence à un schéma, mais au moins il

propose d'en créer un basé sur les données du fichier. Tandis que sur Excel 2010 plus moyen.

Je cherche une solution pour résoudre le problème du message d'erreur.

Mytå

je sais pas si celà peut aider mais j'ai trouver des maps sur un site dont l'url se trouvait dans un fichier genere.

Re le forum

Une solution à tester sous Excel 2010 (Forum anglais) :

Cannot open XML file with Excel2010 but was able with Excel2007

Mytå

je crois que je suis pas trop doué je n'arrive pas à lancer le code. De plus si le comprend bien le code ouvre le fichier et lit ligne par ligne pour les recopier dans une feuille, je ne suis pas sur qu'avec cette méthode j'arrive a concatener plusieurs fichiers entre eux

boudoula a écrit :

je crois que je suis pas trop doué je n'arrive pas à lancer le code. De plus si le comprend bien le code ouvre le fichier et lit ligne par ligne pour les recopier dans une feuille, je ne suis pas sur qu'avec cette méthode j'arrive a concatener plusieurs fichiers entre eux

en effet excel 2007 crée un mappage du fichier, par contre je ne suis pas sur que je veuille faire soit realisable, car en fait chque fichier a potentiellement un mappage different, donc je ne sais pas si c'est possible de les concatener en un seul

Re le forum

Pour les concatener, surement mais tu vas avoir des champs vides sur certains enregistrement.

Regarde si avec la création de fichier .xsd (XML Mapping Schema File) tu pourrais les lires.

Lien : Creating an XML Mapping Schema in Excel 2010

Mytå

bonjour,

toujours pas possible de lire c'est foutu fichiers sur 2010 grrrrrhhhh pourquoi autant de régression avec 2010 ???

Re le forum

Boudoula, es-tu capable d'ouvrir manuellement un fichier XML avec Excel 2010 (Fichier - Ouvrir) ?

Mytå

Bonjour,

je peux ouvir mon fichier en tant que classeur en lecture seule, je ne peux ni en tant que tableau XML ni utiliser le volet de taches XML.

Je ne peux recuperer le fichier modifié que tu m'a envoyé

boudoula a écrit :

Bonjour,

je peux ouvir mon fichier en tant que classeur en lecture seule, je ne peux ni en tant que tableau XML ni utiliser le volet de taches XML.

Je ne peux recuperer le fichier modifié que tu m'a envoyé

Peux tu me le mettre en piece jointe stp

Bonsoir,

voilà j'ai moi ça fonctionne mieux qu'au bureau, alors j'ai pu telecharger ton XML modifié et miracle je peux l'ouvrir avec excel 2010, qu'as tu fais pour ça ?

Re le forum

Explication du déroulement du code

  • Ouverture des fichiers sélectionnées (Boîte de dialogue)
  • Suppression de l'entête des fichiers (<!DOCTYPE)
  • Sauvegarde sous un nouveau nom (New_AncienNom)
  • Importation des nouveaux fichiers sur des feuilles différentes

Fichier original

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE MSRSW SYSTEM "msrsw_v222_lai_iai_normalized.xml.dtd" PUBLIC "-//MSR//DTD MSR SOFTWARE DTD:V2.2.2:LAI:IAI:XML:MSRSW.DTD//EN">
-<MSRSW>

Fichier modifié

<?xml version="1.0" encoding="ISO-8859-1"?>
-<MSRSW>

Mytå

Merci pour les infos j'ai effectivement vu qu'il manquait cette ligne .

PAr contre je n'arrive pas à utiliser le code qui permet de supprimer la ligne avec le code suivant

Sub create_XML(XML_origin As Variant)
Dim Fread As Integer, Fwrite As Integer
Dim WholeLine As String
Dim i As Long

XMLfile_tmp = XML_origin & ".tmp"
Fread = FreeFile()  'use the next file number available
Open XML_origin For Input As #Fread  'data read from this file
Fwrite = FreeFile()
If Dir(XMLfile_tmp) <> "" Then Kill XMLfile_tmp
Open XMLfile_tmp For Output As #Fwrite 'data written in this file
 Line Input #Fread, WholeLine
 Print #Fwrite, WholeLine 'first line is copied
 Line Input #Fread, WholeLine
 If Left(WholeLine, 5) = "<!DOC" Then
        ' do not copy the declaration of type definition
 Else
 Print #Fwrite, WholeLine 
 End If

While Not EOF(Fread)
 Line Input #Fread, WholeLine
 Print #Fwrite, WholeLine      'everything else is copied
Wend

Close #Fwrite
Close #Fread
End Sub
Rechercher des sujets similaires à "gestion fichiers xml"