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 :

Optimisation import xml vers sheet excel


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 12
    Par défaut Optimisation import xml vers sheet excel
    Bonjour à tous,

    Je dois récupérer des datas mises à disposition sur un url intranet au format xml (tableau à 2 dimensions) pour les afficher dans une feuille excel.

    Un des difficulté est liée à la version d'excel que je dois utiliser : excel 2000.
    La seconde est liée à la taille du tableau : 130 colonnes et jusqu'à 2500 lignes

    Actuellement je fait en 2 étapes :
    - récupération des données disponibles dans un type MSXML2.DOMDocument30
    - copie des ChildNodes.Item par 2 boucles imbriquées ( lignes / colonnes)


    étape 1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    const urlFullName="http://tructruc/tructruc/index.php"
    Dim xmlDoc As New MSXML2.DOMDocument30
        xmlDoc.async = False
        xmlDoc.Load (urlFullName)
    étape 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    NbLigne = xmlDoc.DocumentElement.ChildNodes.Length
       For x = 0 To NbLigne
           numcol = 2' c'est la colonne de destination dans excel
           For y = 0 To xmlDoc.DocumentElement.ChildNodes.Item(x).ChildNodes.Length
              Cells(numlig, numcol).Value = xmlDoc.DocumentElement.ChildNodes.Item(x).ChildNodes.Item(y).Text
              numcol = numcol + 1
            Next y
            numlig = numlig + 1
       Next x
    Avantage : ca marche
    inconvénient : c'est long (environ 3 seconde par ligne, donc avec + de 2000 ligne ....)

    Est-il possible de mapper directement la totalité des childnodes de niveau 2 (le + bas) sur une ligne
    ou mieux, de mapper directement ce tableau à 2 dimensions formatté xml sur un range ?

    J'ai testé différentes syntaxe mais rien ne passe.


    Merci d'avance à ceux qui ont des idées ou suggestions

  2. #2
    Membre émérite Avatar de sabzzz
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    748
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 748
    Par défaut
    bonjour lolod,

    j'ai été confronté au même problème et finallement j'ai opté pour un download des données sur access ( la programmation est presque identique) et un traitement des données via excel. l'avantage est que nombre de données possible dans une base access est pratiquement sans limite (sauf bien entendu la mémoire de la machine) et les requêtes à partir d'excel se font très facilement.

Discussions similaires

  1. Optimisation importation PDF vers base access
    Par TheFirstOne dans le forum Access
    Réponses: 6
    Dernier message: 12/05/2014, 22h54
  2. import de fichier xml vers Excel
    Par zidenne dans le forum Excel
    Réponses: 5
    Dernier message: 30/08/2012, 14h28
  3. [AC-2003] Optimisation: Import Excel vers Access par batch plutot que ligne par ligne
    Par thomas.m dans le forum VBA Access
    Réponses: 3
    Dernier message: 12/04/2011, 11h03
  4. Importation xml vers sql server
    Par nicko5959 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/01/2006, 09h06
  5. [Excel] Importation/Exportation vers Access
    Par shub dans le forum Access
    Réponses: 11
    Dernier message: 15/11/2005, 11h07

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