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
J'ai ajouté en début de code
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
et en fin de code
Code : Sélectionner tout - Visualiser dans une fenêtre à part Application.Calculation = xlCalculationManual
je gagne 0.3 seconde.
Code : Sélectionner tout - Visualiser dans une fenêtre à part Application.Calculation = xlCalculationAutomatic
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
Partager