Excel Downloads
Forum

Précédent   Excel Downloads Forums > Excel > Forum Excel


Réponse
 
LinkBack Outils de la discussion
Vieux 06/08/2008, 12h09   #1 (permalink)
XLDnaute Nouveau
 
Date d'inscription: novembre 2007
Messages: 31
Par défaut rectifier fichier xml généré par macro

Bonjour,

J'utilise le code ci-dessous pour générer un fichier xml.
J'ai un problème pour le contenu d'une balise dont le texte comporte des < et > interprétés en &lt; et &gt;

exemple : <logolink><!CDATA[http://...]]></logolink> qui lorsque que je lis dans notepad le fichier xml généré se retrouve en <logolink>&lt;!CDATA[http://...]]&gt;</logolink>

voici mon code ci-dessous issu d'un post de ce forum:

Code:
Sub CreationFichierXML(Plage As Range)
'
'Nécessite d'activer la référence "Microsoft XML, V..."
'
Dim XnodeRoot As IXMLDOMElement, oNode As IXMLDOMNode
Dim XNom As IXMLDOMElement
Dim XInfos As IXMLDOMElement
Dim Cmt As IXMLDOMComment
Dim Entete As Range, Cell As Range
Dim i As Integer, j As Integer
 
Set Entete = Plage.Rows(1)
Set Plage = Plage.Offset(1, 0).Resize(Plage.Rows.Count - 1, Plage.Columns.Count)

'----
Set objDOM = New DOMDocument

'Ajoute un commentaire qui reprend le nom de l'utilisateur et la date du jour.
Set Cmt = objDOM.createComment("Créé par " & Environ("username") & ", le " & Date)
Set Cmt = objDOM.insertBefore(Cmt, objDOM.childNodes.Item(0))
 
   
'Type de fichier
Set oNode = objDOM.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'")
Set oNode = objDOM.insertBefore(oNode, objDOM.childNodes.Item(0))
'----

Set XnodeRoot = objDOM.createElement("Portlet")
objDOM.appendChild XnodeRoot

For i = 1 To Plage.Rows.Count

    Set XNom = objDOM.createElement("Identity")
    XNom.setAttribute "Userinfo", Plage.Cells(i, 1)
    XnodeRoot.appendChild XNom
    
        Set XInfos = objDOM.createElement("LogoUrl")
        XInfos.Text = Feuil2.Cells(13, 4).Value
        XNom.appendChild XInfos
    
        Set XInfos = objDOM.createElement("LogoLink")
        XInfos.Text = Feuil2.Cells(13, 5).Value
        XNom.appendChild XInfos
    
        Set XInfos = objDOM.createElement("MailLabel")
        XInfos.Text = Feuil2.Cells(13, 6).Value
        XNom.appendChild XInfos
        
        Set XInfos = objDOM.createElement("MailRecipient")
        XInfos.Text = Plage.Cells(i, 2)
        XNom.appendChild XInfos

        Set XInfos = objDOM.createElement("MailSubject")
        XInfos.Text = Feuil2.Cells(13, 7).Value
        XNom.appendChild XInfos

Next i
 
objDOM.Save ActiveWorkbook.Path + "\" & Feuil2.Cells(13, 8).Value

Set XnodeRoot = Nothing
Set objDOM = Nothing
End Sub
Si vous avez une idée pour me dépanner soit pour modifier mon code, soit pour ouvrir le fichier xml et remplacer &lt; et &gt; en < et > ce serait formidable.

Bonne journée à tous.
cety64 est déconnecté   Réponse avec citation
ANNONCES
Vieux 06/08/2008, 12h43   #2 (permalink)
XLDnaute Barbatruc
 
Avatar de BrunoM45
 
Date d'inscription: avril 2005
Localisation: MONTARGIS (la Venise du Gâtinais)
Version Excel : Excel 2003 (PC)
Messages: 2 283
Lightbulb Re : rectifier fichier xml généré par macro

Salut Cety64,

Pour moi il s'agit juste d'un problème d'affichage des balises dans le bloc note ou autre !

Dans ton code, tu oublies de mettre l'extension du fichier
Code:
objDOM.Save ActiveWorkbook.Path + "\" & Feuil2.Cells(13, 8).Value & ".xml"
Si tu ajoutes cela et que tu doubles clique sur ton fichier, tu verras que l'affichage dans IE ou Firefox est bon

A+
__________________
Cordi@lement.

La politesse est comme le zéro, qui, sans avoir de valeur en soi, en ajoute à toutes choses.

VBA, vous ne savez pas comment faire ... Pensez à l'enregistreur de macro !
Menu -> Outils -> Macro -> Nouvelle macro

Si vous souhaitez rejoindre le club des Supporters d'XLD ... c'est ICI

Petite citation : C'est en XLDant que l'on devient XLDnaute Barbatruc ...
BrunoM45 est déconnecté   Réponse avec citation
Vieux 06/08/2008, 13h15   #3 (permalink)
XLDnaute Nouveau
 
Date d'inscription: novembre 2007
Messages: 31
Par défaut Re : rectifier fichier xml généré par macro

Merci de ta réponse.

C'est bon dans IE ou firefox mais pas lorsqu'on ouvre le fichier xml avec un éditeur de texte de style notepad, et c'est là mon problème.
cety64 est déconnecté   Réponse avec citation
Vieux 06/08/2008, 13h56   #4 (permalink)
XLDnaute Barbatruc
 
Avatar de BrunoM45
 
Date d'inscription: avril 2005
Localisation: MONTARGIS (la Venise du Gâtinais)
Version Excel : Excel 2003 (PC)
Messages: 2 283
Question Re : rectifier fichier xml généré par macro

Re,

Alors il ne faut pas créer un fichier XML

Mais un fichier texte, sinon pourquoi vouloir l'ouvrir avec notepad !?

A+
__________________
Cordi@lement.

La politesse est comme le zéro, qui, sans avoir de valeur en soi, en ajoute à toutes choses.

VBA, vous ne savez pas comment faire ... Pensez à l'enregistreur de macro !
Menu -> Outils -> Macro -> Nouvelle macro

Si vous souhaitez rejoindre le club des Supporters d'XLD ... c'est ICI

Petite citation : C'est en XLDant que l'on devient XLDnaute Barbatruc ...
BrunoM45 est déconnecté   Réponse avec citation
Vieux 08/08/2008, 08h09   #5 (permalink)
XLDnaute Occasionel
 
Date d'inscription: octobre 2005
Messages: 221
Par défaut Re : rectifier fichier xml généré par macro

Bonjour,

Notepad ne fait qu'afficher le fichier créé sans faire aucune interprétation.

Ajouter le suffixe XML permet simplement de définir une typologie de fichier et l'associer un programme. dans notre cas il ne s'agit simplement d'un fichier contenant une syntaxe XML (donc plutôt du texte).

Explication de texte (Xml) :

Pour éviter de confondre certains caractères (lettres avec accents, &, = >< etc..) avec des balises on doit remplacer dans les textes ces caractères par des &... pour que le parseur (outils d'analyse syntaxique du XML) ne tienne compte de ces caractères.

ici , Comme tu le sais, <> sont remplacés par &GT ou &LT. En conclusion si tu regarde ton fichier, c'est la macro qui fais des substitutions ==> donc il faut agir en amont = probablement choisir une autre méthode que "IXMLDOMElement" en effet le texte attribué via la proprité .txt est converti automatiquement en texte comparible XLM (donc avec convertion des caractères <>&=... en aLT &GT &AMP)


Pour que le parseur n'analyse pas un texte, on peut écrire le texte de la manière
suivante :
<![CDATA[ texte ignoré par le parseur xml]]>


Tu peux effectivement faire un "remplacer par" avec une éditeur mais attention ton XML risque de comporter des erreurs.

Pour afficher du XML n'utilise pas Notepad qui est trop "bourrin" utilise par exemple Ultraedit qui tient compte de la syntaxe



GIBI

Dernière modification par GIBI ; 08/08/2008 à 21h13.
GIBI est déconnecté   Réponse avec citation
Vieux 08/08/2008, 08h22   #6 (permalink)
XLDnaute Occasionel
 
Date d'inscription: mai 2008
Messages: 111
Par défaut Re : rectifier fichier xml généré par macro

bonjour,

un autre solution possible:
en fin de macro, ouvrir le fichier, remplacer les "&lt;" en "<" et réenregistrer le fichier.
peux-tu envoyer le fichier générer stp (juste pour voir le truc, ça m'intrigue)

bonne journée
mromain est déconnecté   Réponse avec citation
Vieux 08/08/2008, 22h56   #7 (permalink)
XLDnaute Occasionel
 
Date d'inscription: octobre 2005
Messages: 221
Par défaut Re : rectifier fichier xml généré par macro

Bonsoir,

je viens apporter une solution à votre problème qui est la saisie d'un texte contenant la notion de CDATA.
Il faut enlever les notion Xml (<!CDATA[...]]>)dela cellule de la feuille excel (Feuil2.Cells(13, 5).Value), et créer directement cette notion comme suit :



Set XInfos = objdom.createElement("LogoLink")
Set root = objdom.documentElement
Set CDATASection = objdom.createCDATASection(Cells(13, 5).Value)
objdom.documentElement.appendChild CDATASection
'XInfos.Text = Cells(13, 5).Value
XNom.appendChild XInfos


et vous n'avez plus de problème de traduction "à tort" des bornes de balise XML


Votre question m'a appris l'utilsation des méthode XML , personnellement je génère des fichiers XML soit avec word et du publipostage soit en VBA excel avec des print.

Merci et bonsoir


GIBI

Dernière modification par GIBI ; 08/08/2008 à 22h59.
GIBI est déconnecté   Réponse avec citation
ANNONCES
Réponse

Liens sociaux

Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui

Discussions similaires
Discussion Auteur Forum Réponses Dernier message
Macro pour ouvrir le dernier fichier texte généré... Christian0258 Forum Excel 23 30/04/2008 11h04
Macro qui génère un graphique Batemoun Forum Excel 28 16/02/2008 15h37
sauveguarder une mise en page généré par une macro saber Forum Excel 2 26/05/2005 16h42
Excel a généré des erreurs : recuperer le fichier Yann Forum Excel 2 11/03/2005 13h51
généré un VBS a partir d'une macro DjeDje_zr7 Forum Excel Downloads - Archives 3 24/11/2004 14h18


Fuseau horaire GMT +2. Il est actuellement 10h11.


(C) 2006 Excel Downloads