Bonjour alors voilà j'aimerais avec vba (macro excel) pouvoir ouvrir mon fichier sonde.xml et y ajouter des mesures/Statut a chaque fois que le fichier excel est ouvert.

Voilà ce que j'ai pour l'instant sous vba :

Code vba : 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
45
46
Sub Export()
Set xmldoc = CreateObject("Microsoft.XMLDOM")
 
Set oCreation = xmldoc.createProcessingInstruction("xml", "version='1.0' encoding='ISO-8859-1'")
xmldoc.InsertBefore oCreation, xmldoc.ChildNodes.Item(0)
 
 
Set root = xmldoc.createElement("Sonde")
    xmldoc.appendChild (root)
    Set MesureElement = xmldoc.createElement("Mesure")
 
    Set LocElement = xmldoc.createElement("Loc")
    LocElement.Text = "Sonde11"
 
    MesureElement.appendChild (LocElement)
 
    Set StatutElement = xmldoc.createElement("Statut")
    StatutElement.Text = "test"
 
    MesureElement.appendChild (StatutElement)
 
    root.appendChild (MesureElement)
 
Set rdr = CreateObject("MSXML2.SAXXMLReader")
Set wrt = CreateObject("MSXML2.MXXMLWriter")
Set oStream = CreateObject("ADODB.STREAM")
oStream.Open
oStream.Charset = "ISO-8859-1"
 
wrt.indent = True
wrt.Encoding = "ISO-8859-1"
wrt.output = oStream
Set rdr.contentHandler = wrt
Set rdr.errorHandler = wrt
rdr.Parse xmldoc
 
wrt.flush
 
oStream.SaveToFile "C:\temp\sonde.xml", 2
 
Set rdr = Nothing
Set wrt = Nothing
Set xmldoc = Nothing
 
 
End Sub

Ce que j'obtiens comme fichier :
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<Sonde>
	<Mesure>
		<Loc>Sonde11</Loc>
		<Statut>test</Statut>
	</Mesure>
</Sonde>

Mais mon code ne me permet pas d'ajouter plus d'enregistrements, ce que je veux dire c'est que je voudrais pouvoir avec l'aide d'une variable insérer a chaque fois avant ou après dans le fichier c'est égal des enregistrements en plus. Sans avoir a rajouter du code. J'ai vu quon pouvait faire des recordsets,mais vba n'étant pas mon point fort je préfère avoir vos avis. MERCI a vous !


Le résultat que j'aimerais avoir sur le fichier :

Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>
<Sonde>
	<Mesure>
		<Loc>Sonde11</Loc>
		<Statut>Eteinte</Statut>
	</Mesure>
             <Mesure>
		<Loc>Sonde27</Loc>
		<Statut>Démarré</Statut>
	</Mesure>
             <Mesure>
		<Loc>Sonde45</Loc>
		<Statut>Démarré</Statut>
	</Mesure>
</Sonde>