CPU saturée et durée de code excessive - VB/VBA/VBS - Programmation
MarshPosté le 15-09-2008 à 13:45:36
Bonjour,
dans Excel une macro VBA effectue 2 requêtes (l'une apres l'autre) par le biais de Microsoft Query. Les 2 requêtes consistent à récuperer 2 listes de données différentes à partir d'une base de donnée source. La BDD source est un fichier ".CSV" de 430 MB.
La durée de traitement: -de la 1ère requête est de 20min -de la 2ème requête est de 50min !
Or les 2 listes générées par les requêtes ont la même taille. (Normalemant la durée de traitement devrait être quasi identique ! )
Par contre lorsque je lance manuellement les 2 requêtes (l'une après l'autre), la durée de traitement est identique pour les 2 (env. 20min chacune)
A cela plusieurs questions: Pourquoi le systeme ralentit énormement lors de la 2ème requête? Y'a t'il trop de données de la 1ère requète en memoire? La CPU qui est à 100% serait-elle saturée? Comment éviter qu' Excel s'emballe? Comment permettre au systeme de repartir à "0" lorsqu'il effectue la 2ème requête (autrement que manuellement)?
Merci d'avance pour vos réponses! Cordialement, Christophe
Marsh Posté le 15-09-2008 à 13:45:36
Bonjour,
dans Excel une macro VBA effectue 2 requêtes (l'une apres l'autre) par le biais de Microsoft Query.
Les 2 requêtes consistent à récuperer 2 listes de données différentes à partir d'une base de donnée source.
La BDD source est un fichier ".CSV" de 430 MB.
La durée de traitement:
-de la 1ère requête est de 20min
-de la 2ème requête est de 50min !
Or les 2 listes générées par les requêtes ont la même taille.
(Normalemant la durée de traitement devrait être quasi identique ! )
Par contre lorsque je lance manuellement les 2 requêtes (l'une après l'autre),
la durée de traitement est identique pour les 2 (env. 20min chacune)
A cela plusieurs questions:
Pourquoi le systeme ralentit énormement lors de la 2ème requête?
Y'a t'il trop de données de la 1ère requète en memoire?
La CPU qui est à 100% serait-elle saturée?
Comment éviter qu' Excel s'emballe?
Comment permettre au systeme de repartir à "0" lorsqu'il effectue la 2ème requête (autrement que manuellement)?
Merci d'avance pour vos réponses!
Cordialement,
Christophe