Comment mesurer la vitesse des macros VBA?


L'optimalisation de la vitesse des macros VBA est d'une importance capitale pour le bon fonctionnement de vos programmes. Plus une macro est rapide, plus le travail est efficace. De l'autre côté, une macro (trop) lente peut être contre-productive ou induire l'utilisateur en erreur s'il pense que la macro est "bloquée".

Optimiser les macros en testant leur vitesse

Pour pouvoir optimiser une macro, il est donc nécessaire de pouvoir mesurer sa vitesse. C'est assez facile et quelques lignes de code suffisent. En fait, il suffit de stocker l'heure exacte de début et l'heure exacte de la fin de la macro et les comparer. Cela vous donnera le temps exact que la macro a pris pour tourner.

Voici un exemple pratique de code VBA qui permet de voir la vitesse de la macro.

 

Vitesse des macros VBA: vitesse partielle pour les différentes parties du code VBA

Connaître la durée totale de l'exécution d'une macro n'est que le début. Il est évidemment possible de mesurer la vitesse de différentes parties du code de la macro et trouver ainsi la partie qui, éventuellement, ralenti toute la procédure. Une fois la partie du code la plus lente identifié, vous pouvez vous concentrer à son optimisation.

Car selon la Loi de Pareto, 80% du temps d'exécution de la macro est causé par 20% du code… Si vous identifiez le "goulot d'étranglement", la correction peut augmenter exponentiellement la vitesse de votre macro VBA.

Code VBA pour déterminer la vitesse des blocs du code

Le code VBA qui suit va vous indiquer la durée nécessaire à l'exécution de différentes parties d'une macro.

Vitesse des macros VBA: durée d'exécution

Pour exemple, le code est séparé en trois parties dont la durée d'exécution est calculée séparément. Bien sûr, vous pouvez séparer le code en autant de partie que vous voulez.

Il suffit de stocker le moment de la fin de chaque étape (comme: MacroEtape8 = Now ) et à la fin, calculer autant de fois la durée de chaque étape (= le moment de la fin d'une étape – le moment de la fin de l'étape précédente; par ex. MacroEtape8_duree = Format(MacroEtape8 - MacroEtape7, "hh:mm:ss").

Vous pouvez choisir le format de la durée à afficher selon votre convenance. J'ai opté pour le format hh:mm:ss

 

Vitesse des macros VBA: quelle précision?

Avec le code VBA indiqué plus haut, vous pouvez mesurer la durée d'exécution de vos macros avec la précision d'une seconde. Ce sera suffisant pour des macros dont le temps d'exécution dépasse 10 secondes.

Si votre macro est plus courte ou si vous avez besoin de l'optimiser au maximum, je vous conseille de mesurer la durée avec la précision en millisecondes. Comment faire? Vous trouverez les informations nécessaires dans: Comment obtenir le temps en millisecondes en VBA? 

Conclusion

J'espère que cette petite astuce vous permettra de rendre vos macros encore plus rapides et encore plus efficaces!

Si vous voulez aller encore plus en profondeur, vous pouvez par exemple exporter les informations vers un fichier texte (créer un log) plutôt que de les afficher dans une fenêtre pop-up (MsgBox). Cela vous permettrait de 1) stocker les résultats de manière durable & 2) ne pas interrompre l'exécution de la macro par l'utilisation du MsgBox

 

1 0

Pourrait vous intéresser

Partagez cette page...
Share on FacebookShare on Google+Share on LinkedInTweet about this on TwitterShare on RedditShare on TumblrDigg thisEmail this to someone

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.