Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim LOC As Range, ValOF As String
ValOF = Target.EntireRow.Columns("A").Value
Set LOC = LignesOùCondR1C1(Rows(2), "AND(RC2<>"""",RC1<>""" & ValOF & """)")
Me.Rows.Hidden = False
LOC.Hidden = True
End Sub
Function LignesOùCondR1C1(ByVal LigneDéb As Range, ByVal CondR1C1 As String) As Range
Rem. ——— Lignes entières partant de LigneDéb qui vérifient une condition R1C1 CondR1C1.
Dim Lignes As Range, ColTrv As Range
With LigneDéb.Worksheet.UsedRange
Set Lignes = LigneDéb.EntireRow.Resize(.Rows.Count + .Row - LigneDéb.Row)
Set ColTrv = Intersect(.Columns(.Columns.Count + 1), Lignes): End With
ColTrv.FormulaR1C1 = "=1/(" & CondR1C1 & ")"
On Error Resume Next
Application.EnableEvents = False
Set LignesOùCondR1C1 = ColTrv.SpecialCells(xlCellTypeFormulas, 1).EntireRow
ColTrv.Delete xlShiftToLeft
Application.EnableEvents = True
End Function