Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Dim ligne As Integer 'pour le masquage des lignes
' La variable KeyCells contient les cellules qui déclencheront
' une alerte si elles sont modifiées.
'Set KeyCells = Range("A5") - On définit une plage et non une cellule particulière
Set KeyCells = Range("A4:A1000")
If Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then Exit Sub
Select Case Target.Value
Case "TOTO"
Columns.Hidden = False
Rows.Hidden = False
Range("G:G,I:M,P:Q,T:X,AA:AA,AC:AD").EntireColumn.Hidden = True
For ligne = 4 To 1000
If Cells(ligne, 1).Value = "TATA" Or Cells(ligne, 1).Value = "TITI" Then Rows(ligne).Hidden = True
Next ligne
Case "TATA"
Columns.Hidden = False
Rows.Hidden = False
Range("H:H,J:J,U:Y,AD:AD").EntireColumn.Hidden = True
For ligne = 4 To 1000
If Cells(ligne, 1).Value = "TOTO" Or Cells(ligne, 1).Value = "TITI" Then Rows(ligne).Hidden = True
Next ligne
Case "TITI"
Columns.Hidden = False
Rows.Hidden = False
Range("H:I,Y:Y,AA:AA,AC:AD").EntireColumn.Hidden = True
For ligne = 4 To 1000
If Cells(ligne, 1).Value = "TOTO" Or Cells(ligne, 1).Value = "TATA" Then Rows(ligne).Hidden = True
Next ligne
End Select
Range("A3").Value = Range("A4:A" & Cells(Application.Rows.Count, "A").End(xlUp).Row).SpecialCells(xlCellTypeVisible).Count - 1
End Sub