Masquer ligne sous condition

Bonjour

J'aurais besoin d'aide pour une macro. Elle sert à masquer des lignes sous la condition suivante: si la valeur de L8 à L2393 est égale à 0. Par contre je voudrais que la ligne soit masqué seulement si dans les colonnes L8 à L2393 la valeur égale 0 mais par exemple si L8 = 0, M8 = 1, N8=1 je ne veux pas que cette ligne soit masqué car dans les 3 colonnes de cette même ligne il y a au moins une donnée qui est différente de 0. Si j'inscrit la valeur de L8 à N2393 cela ne fonctionne pas mais je ne sais pas comment formuler ma requête. En espérant que mes explications sont clair et espérant que quelqu'un peut peux m'aider

Je joins ici ma macro :

Sub masquer_ligne_vide()

Dim cel As Range, Flg As Boolean

' Colorier la 1ère ligne en mettant le flag à vrai

Flg = True

' Pour chaque cellule de la plage

For Each cel In Range("l8:l2393")

If cel = 0 Then

cel.EntireRow.Hidden = True

Else

' Si le flag est vrai

If Flg Then

' Mettre en couleur

cel.EntireRow.Interior.ColorIndex = 15

Else

cel.EntireRow.Interior.ColorIndex = xlNone

End If

' Mettre le flag à l'inverse de sons état précédent

Flg = Not Flg

End If

Next

End Sub

Merci beaucoup

Bonjour chantal25506,

Voici une proposition :

Sub MasquerLigne()

    Dim MaPlage As Range
    Dim MaLigne As Range

    Application.ScreenUpdating = False

    Set MaPlage = Sheets("Feuil1").Range("L8:N2393") 'à adapter
    MaPlage.Rows.EntireRow.Hidden = False 'afficher les lignes actuellement cachées

    For Each MaLigne In MaPlage.Rows
        If Application.WorksheetFunction.Sum(MaLigne) = 0 Then 'masquer si la somme de la ligne=0
            MaLigne.EntireRow.Hidden = True
        End If
    Next
     With MaPlage.SpecialCells(xlCellTypeVisible)
    .EntireRow.Interior.ColorIndex = 15
    End With
    Application.ScreenUpdating = True
End Sub

Cordialement

Bonjour

Cela fonctionne bien pour masquer les lignes, par contre les lignes qui reste afficher sont toutes colorés alors que je voudrai qu'elles soient 1 ligne sur 2 de coloré (je me rends compte que je ne l'avais pas spécifier et je suis désolé)

Merci

Bonjour Chantal,

voici le code corrigé:

Sub MasquerLigne2()

    Dim MaPlage As Range, Rng As Range, MaLigne As Range
    Dim Flg    As Boolean

    Application.ScreenUpdating = False

    Set MaPlage = Sheets("Feuil1").Range("L8:N2393") 'à adapter
    MaPlage.Rows.EntireRow.Hidden = False         'afficher les lignes actuellement cachées

    For Each MaLigne In MaPlage.Rows
        If Application.WorksheetFunction.Sum(MaLigne) = 0 Then 'masquer si la somme de la ligne=0
            MaLigne.EntireRow.Hidden = True
        End If
        If Not MaLigne.Hidden Then
            If Flg Then MaLigne.EntireRow.Interior.ColorIndex = 15
            Flg = Not Flg
        End If
    Next

    Application.ScreenUpdating = True

End Sub

Super tout fonctionne, un très gros merci

Rechercher des sujets similaires à "masquer ligne condition"