Thank you i paste the above code on my VBA but the result is only the first item that it will find . it will not copy the others,

Thanks for your try .

Sub SourcePart()
Dim i As Long
    Dim Parts As Worksheet
    Dim SourcePart As Worksheet
    Dim F_Rng As Range
    Dim T_Str As String
    Dim L_Rw As Long
    Dim c As Range
     
    Set Parts = ThisWorkbook.Sheets("Sheet1")
     
    With Parts
        L_Rw = .Cells(Rows.Count, 1).End(xlUp).Row
        For i = 1 To L_Rw
            T_Str = .Cells(i, 1).Value
            For Each SourcePart In Workbooks("SourcePart.xlsx").Sheets
                With SourcePart


                    Set F_Rng = FindAll(.Range("A:P").Cells, T_Str, , xlWhole)
                    For Each c In F_Rng
                        If Not F_Rng Is Nothing And Not IsEmpty(F_Rng) Then
                            'F_Rng.Cells.Offset(, 1).EntireRow.Resize(, 5).Copy Parts.Cells(i, 1)
                             c.Cells.Offset(, 1).EntireRow.Resize(, 5).Copy Parts.Cells(i, 2)
                            Exit For
                        End If
                        
                 Set F_Rng = .Range("A:P").Find(T_Str, , , xlWhole)
                If F_Rng Is Nothing Then
                MsgBox "Not Found"
                 Exit Sub
                End If
                        
                    Next c
                End With
            Next SourcePart
        Next i
    End With
End Sub
 
 
 ' http://www.cpearson.com/Excel/FindAll.aspx
Function FindAll(SearchRange As Range, _
    FindWhat As Variant, _
    Optional LookIn As XlFindLookIn = xlValues, _
    Optional LookAt As XlLookAt = xlWhole, _
    Optional SearchOrder As XlSearchOrder = xlByRows, _
    Optional MatchCase As Boolean = False, _
    Optional BeginsWith As String = vbNullString, _
    Optional EndsWith As String = vbNullString, _
    Optional BeginEndCompare As VbCompareMethod = vbTextCompare) As Range
     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     ' FindAll
     ' This searches the range specified by SearchRange and returns a Range object
     ' that contains all the cells in which FindWhat was found. The search parameters to
     ' this function have the same meaning and effect as they do with the
     ' Range.Find method. If the value was not found, the function return Nothing. If
     ' BeginsWith is not an empty string, only those cells that begin with BeginWith
     ' are included in the result. If EndsWith is not an empty string, only those cells
     ' that end with EndsWith are included in the result. Note that if a cell contains
     ' a single word that matches either BeginsWith or EndsWith, it is included in the
     ' result.  If BeginsWith or EndsWith is not an empty string, the LookAt parameter
     ' is automatically changed to xlPart. The tests for BeginsWith and EndsWith may be
     ' case-sensitive by setting BeginEndCompare to vbBinaryCompare. For case-insensitive
     ' comparisons, set BeginEndCompare to vbTextCompare. If this parameter is omitted,
     ' it defaults to vbTextCompare. The comparisons for BeginsWith and EndsWith are
     ' in an OR relationship. That is, if both BeginsWith and EndsWith are provided,
     ' a match if found if the text begins with BeginsWith OR the text ends with EndsWith.
     '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
     
     
    Dim FoundCell As Range
    Dim FirstFound As Range
    Dim LastCell As Range
    Dim ResultRange As Range
    Dim XLookAt As XlLookAt
    Dim Include As Boolean
    Dim CompMode As VbCompareMethod
    Dim Area As Range
    Dim MaxRow As Long
    Dim MaxCol As Long
    Dim BeginB As Boolean
    Dim EndB As Boolean
     
     
     
     
    CompMode = BeginEndCompare
    If BeginsWith <> vbNullString Or EndsWith <> vbNullString Then
        XLookAt = xlPart
    Else
        XLookAt = LookAt
    End If
     
     
     ' this loop in Areas is to find the last cell
     ' of all the areas. That is, the cell whose row
     ' and column are greater than or equal to any cell
     ' in any Area.
     
     
    For Each Area In SearchRange.Areas
        With Area
            If .Cells(.Cells.Count).Row > MaxRow Then
                MaxRow = .Cells(.Cells.Count).Row
            End If
            If .Cells(.Cells.Count).Column > MaxCol Then
                MaxCol = .Cells(.Cells.Count).Column
            End If
        End With
    Next Area
    Set LastCell = SearchRange.Worksheet.Cells(MaxRow, MaxCol)
     
     
    On Error GoTo 0
    Set FoundCell = SearchRange.Find(what:=FindWhat, _
    after:=LastCell, _
    LookIn:=LookIn, _
    LookAt:=XLookAt, _
    SearchOrder:=SearchOrder, _
    MatchCase:=MatchCase)
     
     
    If Not FoundCell Is Nothing Then
        Set FirstFound = FoundCell
        Do Until False ' Loop forever. We'll "Exit Do" when necessary.
            Include = False
            If BeginsWith = vbNullString And EndsWith = vbNullString Then
                Include = True
            Else
                If BeginsWith <> vbNullString Then
                    If StrComp(Left(FoundCell.Text, Len(BeginsWith)), BeginsWith, BeginEndCompare) = 0 Then
                        Include = True
                    End If
                End If
                If EndsWith <> vbNullString Then
                    If StrComp(Right(FoundCell.Text, Len(EndsWith)), EndsWith, BeginEndCompare) = 0 Then
                        Include = True
                    End If
                End If
            End If
            If Include = True Then
                If ResultRange Is Nothing Then
                    Set ResultRange = FoundCell
                Else
                    Set ResultRange = Application.Union(ResultRange, FoundCell)
                End If
            End If
            Set FoundCell = SearchRange.FindNext(after:=FoundCell)
            If (FoundCell Is Nothing) Then
                Exit Do
            End If
            If (FoundCell.Address = FirstFound.Address) Then
                Exit Do
            End If
             
             
        Loop
    End If
     
    Set FindAll = ResultRange
     
     
End Function