Excel macro Process trop long

Excel macro Process trop long - Matériels & problèmes divers - Hardware

Marsh Posté le 25-01-2017 à 13:47:48    

Bonjour,
J’ai un problème au niveau du temps d’acquisition qui est beaucoup trop long (6 min pour un fichier).
J’extrais sous vba des données provenant d’un fichier XML.
Mon process est long car je boucle X fois dans l’intégralité du fichier ! J’aimerais boucler sur un bloc de balise et passer à un autre bloc. Sur l’exemple du fichier donné ci-dessous je voudrais pouvoir boucler dans les balises « balisepere »  et pouvoir extraire des valeurs (pas toutes) dans chaque nœud.
J’ai pu voir sur les forums des méthodes pour rentrer dans les balises excel mais je n’arrive pas à l’adapter.
 
Je vous mets aussi un bout de mon programme pour vous montrer la méthode que j’utilise que j’ai « adapté » pour le fichier xml que je vous ai mis.
 
For Xn = 0 To X - 1
'obtention des types
 
genre = oXML.getElementsByTagName("noeud1" ).Item(Xn).Attributes.getNamedItem("Type" ).NodeValue
ActiveSheet.Cells(Xn + i, 1) = genre
 
'si type = C ou S on recupere les données equipement  
 
If genre = "Connector" Or genre = "Shell" Then
equipement = oXML.getElementsByTagName("noeud1" ).Item(Xn).Attributes.getNamedItem("tag" ).NodeValue
ActiveSheet.Cells(Xn + i, 3) = equipement
End If
 
  For Yn = 0 To Y - 1                      
            If xml_doc.getElementsByTagName("noeud2" ).Item(Yn).Attributes.getNamedItem("info" ).NodeValue = equipement Or xml_doc.getElementsByTagName("noeud2" ).Item(Yn).Attributes.getNamedItem("info2" ).NodeValue = equipement Then  
                    pin = xml_doc.getElementsByTagName("noeud2" ).Item(Yn).Attributes.getNamedItem("info3" ).NodeValue
                    ref = xml_doc.getElementsByTagName("noeud2" ).Item(Yn).Attributes.getNamedItem(“tag" ).NodeValue
             End If  
Next Yn
 
Next Xn
 
 
vous qu'on peut pas inserer un fichier je vous copie un fichier exemple xml:
 
- <arbre>
- <balisepere type="">
- <sousbalise1>
  <noeud1 tag="aa" type="cc" />  
  </sousbalise1>
- <sousbalise2>
  <noeud2 info="aa" info2="dd" info3="dd" tag="zz" />  
  </sousbalise2>
  </balisepere>
- <balisepere type="">
- <sousbalise1>
  <noeud1 tag="aa" type="cc" />  
  </sousbalise1>
- <sousbalise2>
  <noeud2 info="bb" info2="dd" />  
  </sousbalise2>
  </balisepere>
  </arbre>

Reply

Marsh Posté le 25-01-2017 à 13:47:48   

Reply

Marsh Posté le 25-01-2017 à 14:33:16    

Salut,
 
J'y connais rien en macro Excell mais suffisament pour te dire que tu n'es pas dans la bonne rubrique :p

Reply

Marsh Posté le 25-01-2017 à 14:51:48    

vladobar a écrit :

Salut,

 

J'y connais rien en macro Excell mais suffisament pour te dire que tu n'es pas dans la bonne rubrique :p

 

Tout pareil :)


---------------
Guide OC x58 - Guide d'achat de config - ALIMS:qui fait quoi? - RKO - Radiooooo
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed