Bonjour à tous!

Je cherche à cacher des lignes d'une feuille de calcul si en colonne A la valeur de la cellule est égale à "0".
Pour faire cela aujourd'hui j'utilise une fonction "for For Each cellule " puis if cellule.value = .... entrierow.hidden....
Voir le code ci-dessous
Cela fonctionne, cependant la macro mets environ 2 secondes pour s'exécuter. J'aimerai réduire ce temps au maximum de chez maximum
Pour info dans mon fichier j'utilise des noms de plage de cellule "gestionnaire de noms" dans le code envoyé je les ai remplacé par les plages correspondantes

Auriez-vous des suggestions svp ?

Merci d'avance pour votre aide

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub Hide_ligne()
Start = Timer
Application.EnableEvents = False            'activation des procédures événementielles
Application.ScreenUpdating = False          'Désctive le rafraîchissement de l'écran
 
        For Each cellule In Range("A12:A16, A31:A34, A41:A42")
    If cellule.Value = "0" Then cellule.EntireRow.Hidden = True
    If cellule.Value = "1" Then cellule.EntireRow.Hidden = False
Next cellule
 
Application.EnableEvents = True            'activation des procédures événementielles
Application.ScreenUpdating = True          'Désctive le rafraîchissement de l'écran
 
MsgBox "durée du traitement: " & Timer - Start & " secondes"
End Sub
J'ai ajouté en début de code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Application.Calculation = xlCalculationManual
et en fin de code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Application.Calculation = xlCalculationAutomatic
je gagne 0.3 seconde.

Est-il possible décrire différemment le For each cellule et/ou les if qui suivent pour gagner en temps d'exécution?

Merci