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
| Sub Plage_Donnees()
'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).
Worksheets("Transferts_Xml").Activate 'Sélectionne la feuille transfert
Range("A65000").End(xlUp).Select 'Sélectionne la dernière ligne de donnée
DernLigneData = ActiveCell.Row 'Donne l'adresse de la dernière ligne de data
CreationFichierXML Worksheets("Transferts_Xml").Range("A1:K" & DernLigneData)
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 XNomChild 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))
'----
'Titre du noeud Root
Set XNodeRoot = objDOM.createElement("ficheInfo")
objDOM.appendChild XNodeRoot
'Titre du noeud enfant
For j = 1 To Plage.Rows.Count
Set XNomChild = objDOM.createElement("fiche")
XNodeRoot.appendChild XNomChild
'Boucle sur les données du tableau
For i = 1 To Entete.Columns.Count
CreationElement Entete.Cells(1, i), Plage.Cells(j, i), XNomChild
Next i
Next j
objDOM.Save "C:\FicheInfo.xml"
Set XNodeRoot = Nothing
Set objDOM = Nothing
End Sub
Sub CreationElement(strElem As String, Donnee As Variant, XNomChild As IXMLDOMElement)
Dim XInfos As IXMLDOMNode
Set XInfos = objDOM.createElement(strElem)
XInfos.Text = Donnee
XNomChild.appendChild XInfos
End Sub |
Partager