From the comments … this is a section of your current code ...
Dim rgFound As Range
Set rgFound = wsh1.Cells.Find(What:="ID", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
Dim x As Range, y As Range, z As Range
Set x = rgFound.Offset(1, 0)
Set y = x.End(xlDown)
Set z = Range(x.Address, y.Address)
wsh1.Range(z.Address).Copy
wsh2.Range("I17").PasteSpecial xlPasteValues
Try replacing it with
Dim rgFound As Range
Set rgFound = wsh1.Cells.Find(What:="ID", After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
Dim x As Range, y As Range, rngSource As Range, rngTarget As Range
Set x = rgFound.Offset(1, 0)
Set y = x.End(xlDown)
Set rngSource = wsh1.Range(x.Address, y.Address)
Set rngTarget = wsh2.Range("$I$17:$I$" & CStr(17 + rngSource.Rows.Count))
rngTarget.Value = rngSource.Value