Masquer lignes en une fois selon valeurs des cellules

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

Bonjour Fravain

J'ai dû louper un épisode, pourquoi vous n'utilisez pas tout simplement les filtres

A+

Bonjour,

Peut-être ainsi :

Sub Test()
With Application
    .ScreenUpdating = False
    .Calculation = xlManual
End With
Dim Cel As Range
For Each Cel In Range("B71:B153")
    Cel.EntireRow.Hidden = IIf(Cel <> 0, False, True)
Next Cel
Application.Calculation = xlAutomatic
End Sub

Bonne apm

Edit : Bruno, pas faux... :)

Bonjour

Mon fichier sera utilisé par plus de 100 personnes, j'avais pensé aux filtres mais dans la cellule avec le nom de la personne, lors du changement (quand elle se recherche) le filtre ne s'actualise pas (et donc ses tâches à effectuer sont masquées/ou à moitié affichée).

-> Mais j'ai testé le code de cousinhub et cela fonctionne super et en 1 seconde même en rajoutant 500 lignes.

Merci !!

Rechercher des sujets similaires à "masquer lignes fois valeurs"