Optimisez vos macros VBA pour des performances maximales

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.

  1. Créez un tableau Excel avec les colonnes « Chiffre A », « Chiffre B », et « Résultat ».
  2. 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 :

  1. Allez dans l’onglet « Développeur » et cliquez sur « Enregistrer une macro ».
  2. Donnez un nom à la macro, par exemple « MultiplicationSimple ».
  3. Effectuez la multiplication pour la première ligne manuellement : sélectionnez la cellule « Résultat » et entrez la formule =A2*B2.
  4. 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 !

Retour en haut