IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA lecture XML [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Mai 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 14
    Par défaut VBA lecture XML
    Bonjour,

    je suis en train de me lancer dans la lecture de fichiers XML en VBA.
    Pour cela, je me base de ce Tutoriel bien connu : https://baptiste-wicht.developpez.co...ipt/xml/xpath/

    Petit bémol sur ce tuto, les variables ne sont pas explicitement déclarées. J'y ai donc remédié comme suit :
    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
    45
    46
    47
    48
    49
     
    Option Explicit
     
    Sub TutoBaptisteWICHT2()
     
    Dim xmlDoc As Object
    Dim personneElement, enfantElement As Object
    Dim enfants As Object
    Dim nom, prenom, etat, age As String
    Dim text, nomEnfant, prenomEnfant As String
     
    Set xmlDoc = CreateObject("Microsoft.XMLDOM")
     
    xmlDoc.Async = "false"
    xmlDoc.Load (ThisWorkbook.Path & "\personnes.xml")
     
    For Each personneElement In xmlDoc.SelectNodes("/personnes/personne")
    'on recupère les éléments sur la personne
     
        nom = personneElement.SelectSingleNode("nom").text
        prenom = personneElement.SelectSingleNode("prenom").text
        etat = personneElement.SelectSingleNode("etat").text
        age = personneElement.getAttribute("age")
        'MsgBox ("Nom : " & nom & vbCrLf & _
                '"Prenom : " & prenom & vbCrLf & _
               ' "Etat civil : " & etat & vbCrLf & _
               ' "Age : " & age)
     
        Set enfants = personneElement.SelectNodes("enfants/enfant")
     
       'S'il y a des enfants
        If enfants.lenght > 0 Then
            text = prenom & " " & nom & " a des enfants :"
            'On boucle sur tous les enfants
            For Each enfantElement In enfants
                nomEnfant = enfantElement.SelectSingleNode("nom").text
                prenomEnfant = enfantElement.SelectSingleNode("prenom").text
                text = text & vbCrLf & "-" & prenomEnfant & " " & nomEnfant
                MsgBox (text)
            Next
        Else
            MsgBox (prenom & " " & nom & " n'a pas d'enfants")
        End If
     
    Next
     
    Set xmlDoc = Nothing
     
    End Sub
    J'ai juste une erreur "438" au moment de l'exécution du bloc IF enfants.lenght > 0 Then....
    Si j'enlève ce bloc, pas de soucis...

    J'ai déclaré "enfants" comme une variable OBJECT. est-ce bien la bonne méthode ?

    Merci d'avance pour votre aide !

  2. #2
    Membre éprouvé
    Homme Profil pro
    Fortune teller
    Inscrit en
    Octobre 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Fortune teller

    Informations forums :
    Inscription : Octobre 2007
    Messages : 110
    Par défaut VBA lecture XML
    il y une faute d'orthographe sur length


  3. #3
    Membre éprouvé
    Homme Profil pro
    Fortune teller
    Inscrit en
    Octobre 2007
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Fortune teller

    Informations forums :
    Inscription : Octobre 2007
    Messages : 110
    Par défaut VBA lecture XML
    Tu peux également tester avec la propriété HasChildNodes pour voir si un élément contient des sous éléments ou non.

  4. #4
    Membre averti
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Mai 2014
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 14
    Par défaut
    merci à toi !

    A force d'avoir le nez devant l'écran, on ne voit plus rien...

    Bonne journée

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PPT-2010] Vba lecture d'un fichier xml intégré au ppt
    Par laguernette dans le forum Powerpoint
    Réponses: 1
    Dernier message: 02/08/2016, 09h29
  2. [SAX] Lecture XML par XmlSax
    Par Carrel dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 11/12/2006, 16h02
  3. [XML] Utilisateurs connectés Lecture XML
    Par Polaire76 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 23/01/2006, 12h05
  4. [C#] [WinForms] Lecture XML
    Par stailer dans le forum Windows Forms
    Réponses: 2
    Dernier message: 05/10/2004, 14h42
  5. [Débutant] Lecture xml SAX
    Par Ekros dans le forum APIs
    Réponses: 6
    Dernier message: 21/06/2004, 15h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo