Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, [h2]) Is Nothing Then
Dim Sh As Worksheet, Rng As Range, sRng As Range, Clls As Range
Dim MyAdd As String, MyColor As Byte, SoDg As Byte
Set Sh = Sheets("53S-6015"): Sh.[A9].Resize(45, 5).ClearContents
Sh.Cells.EntireRow.Hidden = False: MyColor = [h2].Interior.ColorIndex + 1
Set Rng = Range([D1], [D65500].End(xlUp))
Set sRng = Rng.Find([h2].Value, , xlFormulas, xlWhole)
If Not sRng Is Nothing Then
Sh.[a3] = sRng.Offset(, 2).Value
MyAdd = sRng.Address
Do
Sh.[A55].End(xlUp).Offset(1).Resize(, 4).Value = _
sRng.Offset(, -3).Resize(, 4).Value
Set sRng = Rng.FindNext(sRng)
Loop While Not sRng Is Nothing And sRng.Address <> MyAdd
End If
[h2].Interior.ColorIndex = IIf(MyColor > 42, 34, MyColor)
SoDg = 45 - Sh.[A55].End(xlUp).Row
Sh.Cells(54 - SoDg, 1).Resize(SoDg).EntireRow.Hidden = True
Sh.Select: Set Sh = Nothing
End If
End Sub