Bonjour à tous !
J'ai un code qui me permet de masquer les lignes 71 à 153 (pour le moment) d'une feuille en fonction de la valeur de la colonne B.
En revanche j'essaye d'optimiser le code afin de le rendre plus fluide. D'après ce code on test la ligne, si condition remplie (soit valeur <> 0) on masque cette ligne, puis on passe à la prochaine boucle etc.
Ma question : Est-il possible de tester les lignes à masquer, et de les masquer en une seule fois à la fin ? Par exemple la boucle voit que 75, 76, 78, 83, 100, ...150 sont vides et seulement à la fin les lignes se masquent ? A mon sens cela devrait grandement fluidifier la durée de traitement ?
Le fichier étant conséquent et privé, voici le code du module (macro renvoyée sur un bouton).
Sub Test()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False
Application.Calculation = xlManual
Dim Cel As Range
Dim I As Byte
'on affiche toutes les lignes car souvent certaines ne s'affichent pas quand le nom de l'utilisateur change en E8
Rows("71:153").Select
Selection.EntireRow.Hidden = False
'code pour masquer les lignes vides lorsqu'il n'y a pas de livrables
For I = 71 To 153
For Each Cel In Range(Cells(I, 2), Cells(I, 2))
If Cel.Value <> 0 Then GoTo suite1
Next Cel
Rows(I).Hidden = True
suite1:
Next I
Application.EnableEvents = True
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.Calculation = xlAutomatic
End Sub
Merci
Fravain