XL 2019 Importer XML dans un tableau Excel VBA

chamalovich

XLDnaute Nouveau
Bonjour Tout le monde,
J'ai un fichier xml qui contient les notes des élèves de ma classe. j'ai essayé de créer une macro àfin de récuperer dans un tableau certaines informations essentielles mais j'y arrive pas. Si quelqu'un peut m'aider ça serait génial!!
La balises que je veux exploiter et la balise élève et les sous balises sont nom, prénom, identifiant, notes des matières et moyenne trimestrielle.
Merci d'avance.
 

Pièces jointes

  • xml+feuille excel.zip
    24.5 KB · Affichages: 10
Solution
re

demo.gif

patricktoulon

XLDnaute Barbatruc
ok tu veux les données de matiere mais elle portent tous le meme nom dans le xml comment veux tu que l'on devine quelle est la math, sience ,technique

au départ je démarre comme ça
VB:
Sub testx()
    Dim FichierXML
    FichierXML = Application.GetOpenFilename("XML Files (*.xml), *.xml", 1, "ouvrir un fichier XML")
    If FichierXML = False Then Exit Sub
     Feuil1.Range("A10:P10").Resize(100).ClearContents
            ' Process XML FILE
            Dim XDoc As Object
            Set XDoc = CreateObject("MSXML2.DOMDocument")
            XDoc.async = False: XDoc.validateOnParse = False
            XDoc.Load (FichierXML)
   Set eleves = XDoc.DocumentElement.getelementsbytagname("eleve")
  ' MsgBox eleves.Length
   i = 9
   For Each elev In eleves
   i = i + 1
    Cells(i, 1) = i - 9
 Cells(i, 2) = "'" & IIf(elev.ChildNodes(13).tagname = "ident", elev.ChildNodes(13).Text, "") 'balise "ident" identifiant
   Cells(i, 3) = "'" & IIf(elev.ChildNodes(1).tagname = "nom", elev.ChildNodes(1).Text, "") ' balise "nom"
   Cells(i, 4) = "'" & IIf(elev.ChildNodes(2).tagname = "prenom", elev.ChildNodes(2).Text, "") ' balise "prenom"
   
   
   Next
End Sub

après il faut nous donner un peu plus d'indication sur les matières car c'est pas explicitement exprimé dans le xml
 

Pièces jointes

  • notes V° patricktoulon .xlsm
    25.6 KB · Affichages: 5

chamalovich

XLDnaute Nouveau
Oui Vous avez raison!! Mais ce n'est pas grave pour les noms de matières; ce qu'il me faut c'est d'extraire les infos de la balise eleve avec nom prenom identifiant et note matière avec moyenne trimestrielle pour les matières vous pouvez mettre note1, note2 etc... comme la disposition dans ce tableau
1639297934656.png

Il faut noter aussi que j'i en ma possession d'autres fichiers xml qui ont la même structure mais d'autres classes différentes et qui contiennent plus de matieres que celui là
 

Hasco

XLDnaute Barbatruc
Bonjour,

Voici une possibilité par PowerQuery.
A noter :
  1. Les matières n'ont pas de nom mais des code '1 à ?'
  2. Comme dans le fichier le dernier code est 15 j'ai construit les codes manquants (3, 9 à 12) avec des valeurs nulles (si c'est pas bon, on fera autrement)
  3. Il n'y a pas (ou je n'ai pas trouvé) de note trimestrielle dans le fichier. Il y a des notes Semestrielles (1 et 2) et annuelles. Ce sont ces dernières que j'ai extrait.
Il faut noter aussi que j'i en ma possession d'autres fichiers xml qui ont la même structure mais d'autres classes différentes et qui contiennent plus de matieres que celui là
Si vous voulez les extraire dans un seul et même tableau, c'est possible en une seule requête sur le dossier où sont les fichiers. Sur des feuilles différentes également.
Cordialement
 

Pièces jointes

  • notes.xlsm
    44.2 KB · Affichages: 2

patricktoulon

XLDnaute Barbatruc
d'accords ca complique un peu la chose il va falloir alors constrir le tableau avec entete alors
on passe donc en Tableau struturé ç a sera plus simple
après note1 ,note 2 , etc... c'est vague vu le xml
la moyenne trimestrielle ça va elle est explicite
je regarderais ça d'un peu plus près demain
 

Statistiques des forums

Discussions
298 971
Messages
1 973 282
Membres
204 021
dernier inscrit
JnPaco