Bonjour à tous,

Voici mon prob, je dois importer des fichiers XML (qui ont le même structure) dans une base de donnée access, et sin possible dans une même table.

J'ai trouvé ce bout de code sur le forum qui me permet d'importer un fichier XML "simple" dans une table access :

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
Public Sub ImportXML()
 
    Dim doc As MSXML2.DOMDocument
    Dim parent As MSXML2.IXMLDOMElement
    Dim fils As MSXML2.IXMLDOMNode
 
    Dim dt As DAO.Recordset
 
    Set dt = CurrentDb.OpenRecordset("tmpimport")
    Set doc = New MSXML2.DOMDocument
 
    doc.async = False
    doc.Load ("p:\document\desktop\XML\test.xml")
    ' Recherche des noeuds IDENT
    For Each parent In doc.getElementsByTagName("commande")
        dt.AddNew
        ' parcourir noeud fils du parent
        For Each fils In parent.childNodes
            ' attribut = nom du champs
            dt.Fields(fils.nodeName) = fils.Text
        Next
        dt.Update
    Next
 
    Set doc = Nothing
    dt.Close
    Set dt = Nothing
 
End Sub
Je dis simple car la structure du fichier est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
<commandes>
 
		<numCommande>1297</numCommande>
		<numCompteClient>5.85595</numCompteClient>
		<raisonSociale>SOCIETE FINANCIERE DE TERRASSEME</raisonSociale>
		<SIREN>398172296</SIREN>
</commandes>

Mais dès que la structure est plus complexe, le code ne fonctionne plus, et je n'ai aucune idée de comment le modifier.

Par exemple pour un fichier XML ayant 5 ou 6 enfants :
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
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="20071214_commandeRetour_v1_0.xsl"?>
<commandes>
	<societes>
		<societe>
			<IdSociete erreur="">
				<numCommande>1297</numCommande>
				<numCompteClient>5.85595</numCompteClient>
				<raisonSociale>SOCIETE FINANCIERE DE TERRASSEME</raisonSociale>
				<SIREN>398172296</SIREN>
			</IdSociete>
			<sites>
				<site erreur="">
					<SIRET>39817229600020</SIRET>
					<raisonSociale>SOCIETE FINANCIERE DE TERRASSEME</raisonSociale>
						<siteGestFlotte erreur="">
						<nom>RODRIGUEZ</nom>
						<prenom>FOUZIA</prenom>
						<mail>claude.remetter@sofiter.fr</mail>
						<tel>0490474748</tel>
						<mobile></mobile>
						<fax>0490471736</fax>
					</siteGestFlotte>
					<infratel erreur="">
						<PABX erreur="">
							<marque></marque>
							<model></model>
						</PABX>
 
				</site>
			</sites>
 
		</societe>
	</societes>
</commandes>
Merci d'avance pour votre aide, j'espère avoir été assez précis.