Aussi cool que cela puisse paraître en regardant votre macro VBA manipuler l'écran, vous pouvez aider votre macro à s'exécuter plus rapidement si vous désactivez (désactivez) ScreenUpdating.
Désactiver la mise à jour de l'écran
1. Pour désactiver ScreenUpdating, au début de votre code mettez cette ligne :
1 | Application.ScreenUpdating = Faux |
Activer la mise à jour de l'écran
2. Pour réactiver ScreenUpdating, A la fin de votre code mettez cette ligne :
1 | Application.ScreenUpdating = True |
Exemple de mise à jour d'écran VBA
Votre procédure ressemblera alors à ceci :
1234567891011 | Sous-écranUpdating_Example()Application.ScreenUpdating = Faux'Faire quelque chosePlage("a1").Copier la plage("b1")Plage("a2").Copier la plage("b2")Plage("a3").Copier la plage("b3")Application.ScreenUpdating = TrueFin du sous-marin |
ScreenUpdating Actualiser
La désactivation de ScreenUpdating rendra votre code VBA BEAUCOUP plus rapide, mais cela rendra également votre travail plus professionnel. Les utilisateurs finaux ne veulent généralement pas voir les actions en coulisses de vos procédures (en particulier lorsque la procédure est lente). En outre, vous ne voudrez peut-être pas que les utilisateurs finaux voient la fonctionnalité en coulisse (par exemple, les feuilles de travail cachées). Je recommande de désactiver (et de réactiver) ScreenUpdating dans pratiquement toutes vos procédures.
Cependant, il y a des moments où vous souhaitez que l'écran s'actualise. Pour actualiser l'écran, vous devrez réactiver temporairement ScreenUpdating (il n'y a pas de commande d'actualisation de l'écran) :
123 | Application.ScreenUpdating = True'Faire quelque choseApplication.ScreenUpdating = Faux |
Paramètres VBA - Code d'accélération
Il existe plusieurs autres paramètres avec lesquels jouer pour améliorer la vitesse de votre code.
La désactivation des calculs automatiques peut faire une ÉNORME différence de vitesse :
1 | Application.Calcul = xlManuel |
La désactivation de la barre d'état fera également une petite différence :
1 | Application.DisplayStatusBar = Faux |
Si votre classeur contient des événements, vous devez généralement désactiver les événements au début de votre procédure :
1 | Application.EnableEvents = False |
Enfin, votre code VBA peut être ralenti lorsqu'Excel essaie de recalculer les sauts de page (Remarque : toutes les procédures ne seront pas impactées). Pour désactiver l'affichage des sauts de page, utilisez cette ligne de code :
1 | ActiveSheet.DisplayPageBreaks = False |