Bonjour à tous!!!
J'ai un rapport Excel à exporter sous format XML:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<?xml version="1.0" ?> 
<Certificat>
  <observation>
    <numero>352001</numero> 
  </observation>
</Certificat>
À la balise Certificat, je doit ajouter l'attribut xmlns="AnalyseLabo.xsd"

Mais l'attribut en question s'insère AUSSI à la balise observation, mais sans sa veleur ("AnalyseLabo.xsd") alors que si je nome l'attribut test plutôt que xmlns, l'attribut ne s'insère QUE dans la balise Certificat, comme je le voulais au départ...

Voicile code VBA que j'utilise:

Code : 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
Private Sub subCreerXML()
    Dim xmlDoc As New DOMDocument30
    Dim rootElement As IXMLDOMElement
    Dim docElement As IXMLDOMElement
    Dim elementObserv As IXMLDOMElement
    Dim docAttrib As IXMLDOMAttribute
    Dim pi As IXMLDOMProcessingInstruction
 
    xmlDoc.async = False
    xmlDoc.validateOnParse = False
    xmlDoc.resolveExternals = False
 
    ' Création du noeud racine
    Set rootElement = xmlDoc.createElement("Certificat")
 
    ' Création d'un attribut dans la racine : xmlns avec le nom de fichier xsd
    Set docAttrib = xmlDoc.createAttribute("xmlns")
    docAttrib.Text = "AnalyseLabo.xsd"
    rootElement.Attributes.setNamedItem docAttrib
 
    ' Ajouter le noeud racine au document 
    xmlDoc.appendChild rootElement
 
    'Sélectionner la première ligne et boucler jusqu'à la dernière
    Range("A1").Select
    ' Créer l'observation
    Set docElement = xmlDoc.createElement("observation")
 
    'Insérer le numéro
    Set elementObserv = xmlDoc.createElement("numero")
    elementObserv.Text = ActiveCell.Value
    docElement.appendChild elementObserv
    [...]
    'Ajouter la ligne au document 
    rootElement.appendChild docElement
 
    'Fermer les balises
    Set pi = xmlDoc.createProcessingInstruction("xml", "version='1.0'")
    xmlDoc.insertBefore pi, xmlDoc.childNodes.Item(0)
 
    ' Sauvegarde
    xmlDoc.Save "Certificat.xml"
 
End Sub
Et le résultat obtenu:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<?xml version="1.0" ?> 
<Certificat xmlns="AnalyseLabo.xsd">
  <observation xmlns="">
    <numero>352001</numero> 
  </observation>
</Certificat>
alors que le résultat voulu serais celui-cis:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<?xml version="1.0" ?> 
<Certificat xmlns="AnalyseLabo.xsd">
  <observation>
    <numero>352001</numero> 
  </observation>
</Certificat>
Pourquoi donc MSXML place l'attribut xmlns partout alors que si je nomme l'attribut test, il n'yra que dans la racine?

Merci de votre aide éventuelle...