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,
Partager