[XML] Le mappage XML ?

grabulb

XLDnaute Nouveau
Bonjour !

J'ai besoin de créer sous excel Pro 2007 une feuille répertoriant une liste d'entreprises dont les données sont réparties comme suit :
titres des colonnes : Activité, Raison sociale, Adresse, Zone géographique, Telephone, Fax.
Admettons que toutes mes données soient entrées (1 ligne par entreprise, 10 000 entreprises).
Voici mon probleme : A partir de cette feuille je dois générer un document XML qui sera ensuite traité dans Flash8. Seulement voila, lorsque je veux "mapper" ma feuille rien ne s'affiche dans la fenêtre "mappages XML" du bouton "source". Existe t-il des modèles prédéfinis ? Comment finaliser cette manipulation ?
Merci par avance pour vos lumières car je l'avoue je suis totalement dépassé !
 

MichelXld

XLDnaute Barbatruc
Re : [XML] Le mappage XML ?

bonjour

Il me semble que le principe du mappage consiste à lire un fichier xml dans Excel.
Si tu souhaites créer un fichier xml depuis un tableau, je ne sais pas s'il existe une fonction Excel pour cela: Tu devras donc créer une macro pour créer ton fichier xml.



Bon week end
MichelXld
 

grabulb

XLDnaute Nouveau
Re : [XML] Le mappage XML ?

Oui c'est ca !
En fait il faut lier un schéma XML à une feuille excel.
Lors de l'export de cette feuille excel en XML, les données se caleront (à la manière d'un gabarit) a ce schéma de référence.
Le problème qui est le mien est que je ne suis pas assez calé en XML pour créér ce schéma. En revanche, si je suis ton raisonnement il serait possible via la création d'une macro de convertir les données de ma feuille excel directement en document XML sans passer par un schéma ?
Si tel est le cas, je suis complètement preneur de la description de cette macro !:) :) :)
Merci Michel !
 

MichelXld

XLDnaute Barbatruc
Re : [XML] Le mappage XML ?

bonjour

Voici un exemple simple pour créer un fichier xml


Code:
Sub creerFichierXML()
'
'Nécessite d'activer la référence "Microsoft XML, V..."
'
Dim objDOM As DOMDocument
Dim XnodeRoot As IXMLDOMElement
Dim oNode As IXMLDOMNode, XInfos As IXMLDOMNode
Dim XNom As IXMLDOMElement
Dim Cmt As IXMLDOMComment

Set objDOM = New DOMDocument

'Ajout d'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))
 
   
'entête
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("Participants")
objDOM.appendChild XnodeRoot

    Set XNom = objDOM.createElement("Participant")
    XNom.setAttribute "Nom", "Riri"
    XnodeRoot.appendChild XNom
        
        Set XInfos = objDOM.createElement("Ville")
        XInfos.Text = "Ville 01"
        XNom.appendChild XInfos
        
        Set XInfos = objDOM.createElement("DateNaissance")
        XInfos.Text = #5/26/1965#
        XNom.appendChild XInfos
                    
        Set XInfos = objDOM.createElement("Credits")
        XInfos.Text = 3
        XNom.appendChild XInfos
            
            
    Set XNom = objDOM.createElement("Participant")
    XNom.setAttribute "Nom", "Fifi"
    XnodeRoot.appendChild XNom
        
        Set XInfos = objDOM.createElement("Ville")
        XInfos.Text = "Ville 02"
        XNom.appendChild XInfos
        
        Set XInfos = objDOM.createElement("DateNaissance")
        XInfos.Text = #2/14/1970#
        XNom.appendChild XInfos
                    
        Set XInfos = objDOM.createElement("Credits")
        XInfos.Text = 7
        XNom.appendChild XInfos
            

objDOM.Save "C:\Nom Fichier.xml"

Set XnodeRoot = Nothing
Set objDOM = Nothing
End Sub


Bon week end
MichelXld
 

MichelXld

XLDnaute Barbatruc
Re : [XML] Le mappage XML ?

rebonjour


Un autre exemple pour créer un fichier un xml à partir d'une plage de cellules

Code:
Option Explicit

Dim objDOM As DOMDocument
 
 
Sub Test()
    'Définit la plage de cellules qui va servir pour la création du
    'fichier xml.
    'La première ligne du tableau est supposée contenir les entêtes
    '(sans espaces ni caractères spéciaux).
    CreationFichierXML Worksheets("Feuil1").Range("B3:F20")
End Sub
 
 

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 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("MonTableau")
objDOM.appendChild XnodeRoot

'Boucle sur les données du tableau
For j = 1 To Plage.Rows.Count
    Set XNom = objDOM.createElement("DonneeTableau")
    XNom.setAttribute Entete.Cells(1, 1), Plage.Cells(j, 1)
    XnodeRoot.appendChild XNom
        
    For i = 2 To Entete.Columns.Count
        CreationElement Entete.Cells(1, i), Plage.Cells(j, i), XNom
    Next i
Next j
 
objDOM.Save "C:\Nom Fichier.xml"

Set XnodeRoot = Nothing
Set objDOM = Nothing
End Sub
 

Sub CreationElement(strElem As String, Donnee As Variant, oNom As IXMLDOMElement)
    Dim XInfos As IXMLDOMNode
    Set XInfos = objDOM.createElement(strElem)
    XInfos.Text = Donnee
    oNom.appendChild XInfos
End Sub

Bon week end
MichelXld
 

grabulb

XLDnaute Nouveau
Re : [XML] Le mappage XML ?

Merci michel !
La question est surement honteuse mais comment activera la référence "Microsoft XML, V..." ?
J'ai cherché dans l'aide d'excel, sur le web ... mais je n'ai rien trouvé !
J'ai donc une erreur de compilation.
Sinon poue le reste je pense avoir fais les modifications nécessaires ... je te dirais ca lorsque je serai débloqué !

Merci,
bon week end a toi aussi !
 

MichelXld

XLDnaute Barbatruc
Re : [XML] Le mappage XML ?

rebonjour

Dans l'éditeur de macros
Menu Outils
Références
Coche la ligne "Microsoft XML, V..."
Clique sur le bouton OK pour valider



Bon après midi
MichelXld
 

grabulb

XLDnaute Nouveau
Re : [XML] Le mappage XML ?

Bonjour !

Autre erreur :

"erreur d'execution '9'
L'indice n'apartient pas à la sélection

J'ai utilisé le deuxième code que tu m'a proposé. Il semble plus à meme de conserver les structures du tableau. Je pense avoir tout bien modifié ... notament le range que g transformé en : Range("A1:F7") puisque pour l'instant mes données sont inclues ainsi (comprenant les en-tetes).
Pour info, ce fichier XML servira de source à un interface flash pour un tri de données.
 

grabulb

XLDnaute Nouveau
Re : [XML] Le mappage XML ?

Vraissemblablement à ce niveau :


Sub Test()
'Définit la plage de cellules qui va servir pour la création du
'fichier xml.
'La première ligne du tableau est supposée contenir les entêtes
'(sans espaces ni caractères spéciaux).
CreationFichierXML Worksheets("feuil1").Range("A1:F7")
End Sub


Bien que le résultat en erreur soit identique où que soit le curseur !
 

MichelXld

XLDnaute Barbatruc
Re : [XML] Le mappage XML ?

bonsoir


Vraissemblablement à ce niveau :

Sub Test()
'Définit la plage de cellules qui va servir pour la création du
'fichier xml.
'La première ligne du tableau est supposée contenir les entêtes
'(sans espaces ni caractères spéciaux).
CreationFichierXML Worksheets("feuil1").Range("A1:F7")
End Sub

Bien que le résultat en erreur soit identique où que soit le curseur !

?
je n'ai pas compris le sens de ton message ...


Bonne soirée
MichelXld
 

grabulb

XLDnaute Nouveau
Re : [XML] Le mappage XML ?

tu me demandes sur quelle ligne se trouve l'erreur !
Comme rien ne m'indique quelle ligne est exactement à l'origine de cette erreur mais que le message d'erreur s'affiche directement lorsque le curseur est dans cette partie du code, j'ai inscris le bout de code en question.
Lorsque le curseur est sur une autre partie du code, le programme me demande d'abord de valider la macro choisie. Ce n'est qu'apres avoir validé que l'erreur s'affiche. Pardon si je ne suis pas tres clair mais je navigue en terrain vraiment inconnu :confused:
 

MichelXld

XLDnaute Barbatruc
Re : [XML] Le mappage XML ?

bonsoir


Vérifie le nom de la feuille que tu as indiqué dans ta procédure:

Code:
CreationFichierXML Worksheets("Feuil1").Range("A1:F7")
Tu as bien une feuille nommée Feuil1 dans ton classeur ?



Bonne soirée
MichelXld
 

grabulb

XLDnaute Nouveau
Re : [XML] Le mappage XML ?

Tout à fait ! la feuille sur laquelle je travaille s'appelle bien "Feuil1".
J'ai bien essayé de retransformer mon tableau en plage de cellules normale au cas ou mais ca n'a rien changé ...
 

azzouzze

XLDnaute Junior
Re : [XML] Le mappage XML ?

Bonjour,

je ne suis pas bien calé en XML et excel et mon prob ets le suivant:
j ai des fiches word ( sous word 2003 ) avec des listes deroulantes nommé,
je voudrai recupérer ces champs de facon automatique sous excel pour faire des statistiques,
sachant que les fiches sont misent à jour, je voudrai que le tableau excel se mette a jour automatiquement aussi lors de l ouverture ou autre.

Le mappage XML est censé etre une solution assez puissante et fiable...est ce une bonne solution pour mon problème? comment faire?


Merci d'avance
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas