Je souhaiterais pouvoir masquer les lignes ne correspondant pas au résultat de ma liste déroulante (cellule A1).
Exemple 1: Si cellule A1 = 8, j'aimerais que les lignes 5 à 8 et 10 à 13 soient masquées automatiquement.
Exemple 2: Si cellule A1 = 10, j'aimerais que les lignes 5 à 9 et 11 à 13 soient masquées automatiquement.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
Me.Protect Password:=".", UserInterfaceOnly:=True
If Range("A1") = "" Then Rows("5:13").Hidden = False: Exit Sub
For Each c In Range("A5:A13")
c.EntireRow.Hidden = c <> Range("A1")
Next
End Sub
Merci beaucoup pour votre aide. Votre code fonctionne parfaitement bien; le seul bémol c'est qu'il ne réaffiche pas toutes les lignes quand je vide la cellule A1 mais il est vrai que je ne l'avais pas mentionné dans ma demande initiale.
Mes meilleures salutations et bon début de semaine.
Merci pour votre aide mais le réaffichage des lignes lorsque je vide la cellule A1 ne fonctionne malheureusement pas chez moi avec votre macro modifiée.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Range("A1") = "" Then Rows("5:13").Hidden = False: Exit Sub
For Each c In Range("A5:A13")
c.EntireRow.Hidden = c <> Range("A1")
Next
End Sub
Comme il y a peu de lignes il est inutile de tester Target.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
If Range("A1") = "" Then Rows("5:13").Hidden = False: Exit Sub
For Each c In Range("A5:A13")
c.EntireRow.Hidden = c <> Range("A1")
Next
End Sub
Comme il y a peu de lignes il est inutile de tester Target.
Effectivement votre code est plus simple et je vous en remercie.
Je souhaiterais juste y ajouter un verrouillage de la feuille mais je suis pas fichu d'y arriver .
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
ActiveSheet.Unprotect Password:="."
Dim c As Range
If Range("A1") = "" Then Rows("5:24").Hidden = False: Exit Sub
For Each c In Range("A5:A24")
c.EntireRow.Hidden = c <> Range("A1")
Next
ActiveSheet.Protect Password:="."
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
Me.Protect Password:=".", UserInterfaceOnly:=True
If Range("A1") = "" Then Rows("5:13").Hidden = False: Exit Sub
For Each c In Range("A5:A13")
c.EntireRow.Hidden = c <> Range("A1")
Next
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
Me.Protect Password:=".", UserInterfaceOnly:=True
If Range("A1") = "" Then Rows("5:13").Hidden = False: Exit Sub
For Each c In Range("A5:A13")
c.EntireRow.Hidden = c <> Range("A1")
Next
End Sub