Aujourd’hui, nous allons voir comment optimiser les macros enregistrées avec VBA pour améliorer leurs performances.
En effet, les macros enregistrées peuvent souvent être longues à exécuter, faire scintiller l’écran et produire des résultats peu esthétiques. Heureusement, avec quelques manipulations simples, nous pouvons rendre ces macros beaucoup plus efficaces. Passons à la pratique !
Configuration de l’exemple
Nous allons travailler avec un tableau Excel contenant deux colonnes, « Chiffre A » et « Chiffre B », et nous allons multiplier les valeurs de chaque ligne pour remplir une troisième colonne, « Résultat ». Nous avons 1000 lignes, ce qui nous permettra de bien voir les différences de performances.
- Créez un tableau Excel avec les colonnes « Chiffre A », « Chiffre B », et « Résultat ».
- Remplissez les colonnes « Chiffre A » et « Chiffre B » avec des valeurs aléatoires.
Enregistrer une macro de base
Pour commencer, nous allons enregistrer une macro simple qui effectue la multiplication pour chaque ligne :
- Allez dans l’onglet « Développeur » et cliquez sur « Enregistrer une macro ».
- Donnez un nom à la macro, par exemple « MultiplicationSimple ».
- Effectuez la multiplication pour la première ligne manuellement : sélectionnez la cellule « Résultat » et entrez la formule
=A2*B2
. - Arrêtez l’enregistrement de la macro.
Ensuite, nous allons adapter cette macro pour qu’elle boucle sur toutes les lignes :
Sub MultiplicationSimple()
Dim i As Long
For i = 2 To 1001
Cells(i, 3).Value = Cells(i, 1).Value * Cells(i, 2).Value
Next i
End Sub
Optimisation des variables
Nous allons commencer par optimiser les variables en utilisant les types de données appropriés. Cela réduit le temps de calcul et améliore les performances.
Sub MultiplicationOptimizedVariables()
Dim i As Long
Dim chiffreA As Double
Dim chiffreB As Double
Dim resultat As Double
For i = 2 To 1001
chiffreA = Cells(i, 1).Value
chiffreB = Cells(i, 2).Value
resultat = chiffreA * chiffreB
Cells(i, 3).Value = resultat
Next i
End Sub
Désactiver les calculs automatiques et la mise à jour de l’écran
Une autre technique consiste à désactiver les calculs automatiques et la mise à jour de l’écran pendant l’exécution de la macro.
Sub MultiplicationNoCalcScreenUpdate()
Dim i As Long
Dim chiffreA As Double
Dim chiffreB As Double
Dim resultat As Double
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
For i = 2 To 1001
chiffreA = Cells(i, 1).Value
chiffreB = Cells(i, 2).Value
resultat = chiffreA * chiffreB
Cells(i, 3).Value = resultat
Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Éliminer les sélections inutiles
Pour améliorer encore les performances, nous allons éliminer toutes les sélections inutiles dans le code.
Sub MultiplicationNoSelect()
Dim i As Long
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
For i = 2 To 1001
Cells(i, 3).Value = Cells(i, 1).Value * Cells(i, 2).Value
Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Combiner toutes les optimisations
Enfin, nous allons combiner toutes les optimisations dans une macro finale pour des performances optimales.
Sub MultiplicationOptimized()
Dim i As Long
Dim chiffreA As Double
Dim chiffreB As Double
Dim resultat As Double
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
For i = 2 To 1001
chiffreA = Cells(i, 1).Value
chiffreB = Cells(i, 2).Value
resultat = chiffreA * chiffreB
Cells(i, 3).Value = resultat
Next i
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Conclusion
Nous avons vu comment optimiser les macros VBA pour améliorer leurs performances en utilisant des variables appropriées, en désactivant les calculs automatiques et la mise à jour de l’écran, et en éliminant les sélections inutiles. J’espère que ce tuto t’a plu et que tu pourras appliquer ces techniques pour rendre tes macros plus efficaces.
Retrouvez en détails comment faire ici et retrouvez tous mes autres tutos par là.
N’oubliez pas de vous abonner à la chaîne et de laisser un commentaire pour me dire ce que vous avez pensé de cette vidéo.
Merci pour ton soutien et à bientôt sur Cybermatik !