Masquer lignes en fonction d'une valeur

Bonjour,

Je cherche un moyen pour Masquer/Afficher des lignes en fonction d'une valeur type string dans les cellules de la colonne B

Si la colonne B contient "PUB", masquer les lignes correspondantes

Merci d'avance :)

Bonjour,

un essai pour les 7 feuilles/jours de la semaine

Pour masquer les lignes avec PUB :

Sub SansPub()
Dim i As Long, j As Byte, DL As Long

Application.ScreenUpdating = False
For j = 1 To 7
    With Worksheets(WorksheetFunction.Proper(Format(j, "dddd")))
     DL = .Range("C" & Rows.Count).End(xlUp).Row
     For i = 3 To DL
        If .Range("B" & i).Value Like "*PUB*" Then .Rows(i).Hidden = True
     Next
    End With
Next
Application.ScreenUpdating = True
End Sub

pour afficher toutes les lignes:

Sub AfficheToutesLignes()
Dim j As Byte, DL As Long
For j = 1 To 7
    With Worksheets(WorksheetFunction.Proper(Format(j, "dddd")))
     DL = .Range("C" & Rows.Count).End(xlUp).Row
     .Rows("3:" & DL).Hidden = False
    End With
Next
End Sub

à tester

A+

Merci beaucoup, je teste ça demain !

Pour répondre à votre message privé :

.../... si je duplique le classeur ce code ne fonctionne plus je reçois le message suivant .../...

Le code de masquage est prévu pour "travailler" sur les feuilles Lundi, Mardi, ....Samedi et Dimanche.

Dès lors que ces noms de jour de semaine ne sont pas respectés, il y a erreurs.

Une modification possible, si les feuilles des jours de semaine sont toujours à la même position ( à savoir Lundi en 2, Mardi en 3, Mercredi en 4 ....), le nom de la feuille n'a plus d'importance :

Sub SansPub()
Dim i As Long, j As Byte, DL As Long

Application.ScreenUpdating = False
For j = 2 To 8
    With Worksheets(j)
     DL = .Range("C" & Rows.Count).End(xlUp).Row
     For i = 3 To DL
        If .Range("B" & i).Value Like "*PUB*" Then .Rows(i).Hidden = True
     Next
    End With
Next
Application.ScreenUpdating = True
End Sub

Sub AfficheToutesLignes()
Dim j As Byte, DL As Long
For j = 2 To 8
    With Worksheets(j)
     DL = .Range("C" & Rows.Count).End(xlUp).Row
     .Rows("3:" & DL).Hidden = False
    End With
Next
End Sub

ça fonctionne parfaitement ! Je vous remercie !

Je reviens vers vous pour compléter cette demande, j'aimerais que lorsque je masque les lignes de pub, elles soient également masqué sur la première page qui est en fait le récapitulatif des pages suivantes.

Je vous remets la dernière version du fichier.

Merci d'avance,

Sur la feuille récapitulative les programmes des jours de la semaine se trouvent côte à côte, en colonnes.

Le masquage des lignes pour un jour entrainera forcément le masquage de ces lignes pour tous les jours ....

Je ne vois pas de solution simple pour résoudre votre soucis.

La création d'une nouvelle discussion permettra peut-être d'attirer de nouveaux intervenants....

Bonne suite

Merci pour votre réponse :)

Bonjour,

Je me permets de faire un petit up sur ce sujet.

Je tente d'ajouter la même fonction pour masquer un autre contenu mais ça ne fonctionne pas et je ne vois pas pourquoi.

Voilà la fonction en question. Elle fonctionne parfaitement pour la PUB ou pour les BA par exemple mais dans ce cas précis ça ne fonctionne pas.

Est-ce que le # contenu dans la valeur pourrait poser problème ?

Sub SansCapsules()
Dim i As Long, j As Byte, DL As Long

Application.ScreenUpdating = False
For j = 2 To 8
    With Worksheets(j)
     DL = .Range("F" & Rows.Count).End(xlUp).Row
     For i = 3 To DL
        If .Range("F" & i).Value Like "*Capsule 1*" Then .Rows(i).Hidden = True
        If .Range("F" & i).Value Like "*Capsule 2*" Then .Rows(i).Hidden = True
        If .Range("F" & i).Value Like "*Capsule 3*" Then .Rows(i).Hidden = True
        If .Range("F" & i).Value Like "*Capsule 4*" Then .Rows(i).Hidden = True
        If .Range("F" & i).Value Like "*Capsule 5*" Then .Rows(i).Hidden = True
        If .Range("F" & i).Value Like "*Capsule 6*" Then .Rows(i).Hidden = True
     Next
    End With
Next
Application.ScreenUpdating = True
End Sub

Merci d'avance pour votre aide

Rechercher des sujets similaires à "masquer lignes fonction valeur"