Optimisation du temps sous Excel

Résolu/Fermé
Totodude Messages postés 5 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 26 septembre 2007 - 26 sept. 2007 à 12:19
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 27 sept. 2007 à 08:53
Bonjour à tous,

Voici mon soucis : j'ai un super fichier excel qui rappatrie à l'aide d'une macro les données depuis d'autres fichiers excel. Ces infos sont rappatrié sous un onglet, et sont ensuite exploité dans plusieurs autres onglets.
Mon soucis est que ma macro ouvre les fichiers un par un et rappatrie les données (il y a 120 fichiers en tout), et ça prend 1h30.
J'ai remarqué que le temps perdu était non pas dans l'exécution de la macro, mais du fait qu'une fois les données rappatriées, les calculs derrières font que la feuille excel met un moment à se mettre à jour (et pendant ce temps la macro n'avance pas).

D'où ma demande d'aide.
J'entrevois 2 possibilités (que je ne sais pas développer)
* faire en sorte que la macro s'exécute et que les onglets avec les calculs ne se mettent à jour qu'a la fin et pas constamment
* faire tourner la macro sur un fichier "light" sans les onglets lourds, et ensuite les importés (mais je ne sais pas comment faire cette importation vu qu'il y a des références aux premiers onglets avec toutes les infos, donc faire un copier des onglets de calculs créé des liens avec le fichier d'ou je les prend)

dans le 2 ème cas pour être plus clair, j'ai 2 fichier A et B, A étant le fichier "light", et B le vierge avec les onglets de calcul. Je lancerais la macro sur le A, puis j'importe l'onglet 2 du fichier B dans le A (mais en faisant ça je créé des liens avec le fichier B)

J'espère que c'est clair...merci beaucoup pour votre aide,

A plus
Tom
A voir également:

4 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
26 sept. 2007 à 15:28
Bonjour,

As-tu essayé en passant supprimant le calcul automatique et en le rétablissant ensuite ?
ça devrait être :
Application.Calculation = xlManual
Application.Calculation = xlAutomatic

et tu peux forcer un recalcul des feuilles par Calculate

eric
2
Raymond PENTIER Messages postés 58396 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 25 avril 2024 17 094
27 sept. 2007 à 04:11
Bravo, eriiic ! C'est ce qu'on appelle de la concision et de l'efficacité !
0
Totodude Messages postés 5 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 26 septembre 2007
26 sept. 2007 à 16:10
Merci beaucoup Eric.
Je n'en reviens pas de la simplicité, ça marche du feu de dieu, je suis passé de 1h30 à 4 minutes d'exécution!!!
Je n'ai pas eu besoin de Calculate, j'ai juste mis
Application.Calculation = xlManual au début de la macro, puis
Application.Calculation = xlAutomatic à la fin

Merci encore et à plus
Thomas
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
26 sept. 2007 à 16:33
Ah ben oui, petite amélioration ;-)
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
27 sept. 2007 à 08:53
N'est-ce pas raymond ;-)
Merci, et bonne journée ou bonne nuit
0