tu peux remplacer la ligne contenant Cells.find par la ligne suivante :
lRow = .Cells(Rows.Count, 2).End(xlUp).Row
Cette ligne de commande repère le numéro de la dernière cellule non vide de la colonne 2.
lCol = .Cells(3, Columns.Count).End(xlToLeft).Column
celle la repère la dernière colonne non vide de la ligne 3
du coup cells(lrow,lcol) représente la dernière cellule non vide de ta plage.
tu sélectionnes alors la 1ere cellule non vide de ta plage ("B4") et la dernière cells(lrow,lcol) et tu effaces tout ce qui se trouve entre ces 2 références :
.Range(.Range("B4"), .Cells(lRow, lCol)).ClearContents
j'espère que c'est plus clair ainsi.