La macro s’exécute lentement, mais avance rapidement (Microsoft Excel)
Fredric a écrit sur un problème qu’il avait avec une macro. Lorsqu’il exécute la macro dans l’éditeur VB en utilisant F8 (pas à pas dans la macro), elle se termine en quelques minutes. Quand il exécute la macro purement et simplement, son exécution semble prendre une éternité, prenant souvent 20 minutes ou plus à exécuter. Même si le classeur de Fredric est volumineux (46 Mo), le décalage horaire entre les deux méthodes d’exécution est gênant.
Des problèmes comme celui-ci peuvent être déconcertants et nécessitent souvent une analyse approfondie pour les résoudre. Un bon point de départ est d’ajouter un « code de minuterie » dans votre macro. Ajoutez une petite routine qui enregistre une valeur de temps et une autre routine qui compare cette valeur enregistrée à l’heure actuelle et affiche la différence. Au début d’une section de code que vous souhaitez analyser, vous appelez la première routine (qui enregistre l’heure de début)
puis à la fin de la section de code, vous appelez la deuxième routine.
De cette façon, vous pouvez déterminer quelles parties de votre code prennent le plus de temps à s’exécuter. Ce sont les sections de code sur lesquelles vous vous concentrez ensuite, afin que vous puissiez comprendre ce qu’ils font et qui prend si longtemps.
Une autre chose à vérifier est d’ajouter ces deux lignes au début de votre macro:
Application.ScreenUpdating = False Application.EnableEvents = False
Ceux-ci désactivent la mise à jour de l’écran, ce qui peut ralentir l’exécution d’une macro et désactiver les événements. Cette dernière ligne est incluse afin que les modifications apportées par la macro dans votre feuille de calcul ne déclenchent pas les routines de recalcul d’Excel. Si votre macro apporte beaucoup de modifications aux données de la feuille de calcul et qu’un recalcul complet est déclenché après chaque modification, alors avec un classeur aussi volumineux, beaucoup de temps peut être passé à effectuer le recalcul. A la fin de votre macro, vous inversez l’effet des deux lignes que vous avez ajoutées:
Application.EnableEvents = True Application.ScreenUpdating = True
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (2436) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:
link: / excelribbon-Macro_Runs_Slowly_but_Steps_Quickly [La macro s’exécute lentement, mais avance rapidement]
.