Bonjour à tous,
une erreur de conception à ta macro.
Il faut démasquer toutes les lignes avant de masquer, sinon celles qui ne doivent plus l'être restent masquées.
Les masquer en une fois sur le 1er tableau en les mémorisant
Sub Cacher_Nom1()
Dim pl As Range
Rows("1:160").EntireRow.Hidden = False
If [g3] = 0 Then
For i = 5 To 160
If Cells(i, 6) = 0 And Cells(i, 7) = 0 And Cells(i, 8) = 0 And Cells(i, 9) = 0 Then
If pl Is Nothing Then Set pl = Cells(i, 6) Else Set pl = Union(pl, Cells(i, 6))
End If
Next i
If Not pl Is Nothing Then pl.EntireRow.Hidden = True
[g3] = 1
End If
End Sub
eric