XL 2019 Importer XML dans un tableau Excel VBA

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

Solution
re

demo.gif
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

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à
 
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

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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour