Bonjour,
Pour optimiser une procédure (macro), la première règle est de déclarer toutes les variables. Pour cela placer en tête de module Option Explicit
Certes avec le peu de variables que contient ta procédure tu ne vas sans doute pas constater de différence mais il est important de le faire.
Pour un balayage d'autant de lignes avec écriture sur les lignes, placer cette commande en début de procédure
Application.ScreenUpdating = False
là par contre la différence devrait se faire sentir.
S'il y a des formules, il y a aussi lieu de couper la calculation automatique par l'instruction
Application.Calculation = xlManual
sans oublier de remetre la calculation suivant l'option déterminée au préalable.
Donc lecture de cette option par
Dim optCalculation As Integer: optCalculation = Application.Calculation
Que l'on place en début de procédure et ainsi en fin de procédure on place cette ligne
1 2
| Application.Calculation = optCalculation
Application.ScreenUpdating = False |
La deuxième ligne n'est pas obligatoire mais c'est plus propre.
Si tu veux passer à la vitesse turbo avec ta procédure, une façon idéale serait de travailler avec des variables tableaux.
Voir les tutoriels Les tableaux dans Excel 2007 et Conceptualisation des variables tableau en VBA et Application à l'optimisation du code sous Excel. Lecture indispensable si tu veux gérer de grands volume.
Il est préférable aussi de travailler avec des variables objets et préciser surtout sur quel range tu travailles parce-que Range("G2:I" & fin_de_fichier).ClearContents va effacer la feuille active. C'est à dire que tu risques d'effacer la feuille que tu as mis cinq heures à peaufiner tout simplement parce-que c'était la feuille active au moment où tu as enclencher la procédure.
Partager