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

XML/XSL et SOAP Discussion :

Lecture de données d'un xml


Sujet :

XML/XSL et SOAP

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Septembre 2013
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2013
    Messages : 10
    Par défaut Lecture de données d'un xml
    Bonjour à tous,

    Je me permets de vous contacter car cela fait plusieurs jours que je galère à obtenir mon résultat final.
    J'ai un fichier XML (cf pièce jointe) qui n'a pas une arborescence concrète tel que parent--> fils--> petit fils--> etc. Donc il est difficile de faire une boucle pour extraire des données à l'aide de VBA.

    Je m'explique. Je souhaite extraire certaines données comprises entre différentes lignes de mon fichier xml. Pour cela j'ai créé une boucle qui permet de créer une feuille ou d'effacer la feuille si elle est déjà existante afin de renseigner par feuille des informations.

    Voici le code:

    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
    For Each WF_classElement In Gfi_XMLDoc(Gfi_Position_modele(Gfi_indice_modele)).SelectNodes("/PLMXML/WorkflowTemplate")
     
        Gfi_module_enCours = Gfi_indice_modele
     
        GFI_a7_WF_className = WF_classElement.getAttribute("name")
        GFI_a7_WF_className_trunc = Left(GFI_a7_WF_className, 30)
     
        GFI_a7_WF_iconKey = WF_classElement.getAttribute("iconKey")
     
        If (InStrRev(GFI_a7_WF_iconKey, "process", , vbTextCompare) > 0) Then
     
        If fct_WsExist(GFI_a7_WF_className_trunc) Then
            Sheets(GFI_a7_WF_className_trunc).Cells.Clear
            Sheets(GFI_a7_WF_className_trunc).Cells.ClearContents
            Sheets(GFI_a7_WF_className_trunc).Activate
        Else
            ActiveWorkbook.Sheets.Add After:=Worksheets(Worksheets.Count)
            ActiveSheet.Name = GFI_a7_WF_className_trunc
     
        End If
     
       Else
           GoTo Next_Sentence
        End If
     
           Set WF_articles_autoriseElement = Gfi_XMLDoc(Gfi_Position_modele(Gfi_indice_modele)).SelectNodes("/PLMXML/WorkflowBusinessRuleHandler[@name='EPM-check-target-object']/Arguments/UserValue")
     
                GFI_a7_articles_autorisés = WF_articles_autoriseElement(0).getAttribute("value")
     
                If (InStrRev(GFI_a7_articles_autorisés, "-status_allow=", , vbTextCompare) > 0) Then
                    Sheets(GFI_a7_WF_className_trunc).Cells(7, 3).Value = GFI_a7_articles_autorisés
                End If
     
    Next_Sentence:
     
     
    Next
     
    EXIT_SUB:
     
    End Sub


    En se référençant au fichier xml en pièce jointe, mon code créé bien une feuille par nœud sélectionné. Le problème arrive au niveau de l'information que je souhaite renseigner par feuille. Mon code renseigne à chaque fois la même valeur sur chaque feuille et ce n'est pas ce que je souhaite.

    J'aimerai que la boucle ne recommence par à lire le fichier xml dès le début et qu'il continue de lire le fichier.
    En expliquant le fichier xml, il créé une feuille pour les lignes suivantes:
    6-->286 (I10)
    287-->632 (I20)
    633-->839 (I21)
    840-->1028 (I30)
    1029-->1294 (I31)
    1295-->1354 (I60)
    1355-->1414 (I61)
    1415-->1474 (I63)
    1475--> fin (I64)

    J'aimerai donc qu'entre chaque intervalle (n° ligne), le code ne prenne uniquement que les informations comprises dans ces intervalles.

    J'espère avoir été assez claire. Si ce n'est pas le cas dites le moi et j'apporterai des précisions.

    Je vous remercie d'avance pour vos réponses et pour le temps utilisés pour traiter mon problème.

    Cordialement,
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [WD17] Lecture de données XML
    Par thierrybatlle dans le forum WinDev
    Réponses: 7
    Dernier message: 09/11/2013, 21h18
  2. [Visiteur] [C#] Lecture de données XML, Csv
    Par al2000 dans le forum Design Patterns
    Réponses: 1
    Dernier message: 19/07/2011, 15h09
  3. Xml datasource Probleme de lecture des données
    Par gazzall dans le forum Jasper
    Réponses: 1
    Dernier message: 29/03/2007, 11h18
  4. [AJAX] Lecture de données XML
    Par flgwen dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 08/01/2007, 09h34
  5. [FLASH MX2004] [XML] Lecture de données XML
    Par ZiT dans le forum Flash
    Réponses: 1
    Dernier message: 12/07/2005, 11h51

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