Option Explicit: Your Friend
That should teach you to always use Option Explicit
. If you had been using it the following might have happened (Compile error: Variable not defined
):

After OK:

you see that something is wrong with Row
.
After changing to Rows
another Compile error: Variable not defined
. After OK:

you see that something is wrong with a =
.
After adding Dim a As Long
another Compile error: Variable not defined
. After OK:

you see that something is wrong with i
.
After adding Dim i As Long
another Compile error: Variable not defined
. After OK:

You see something is wrong with Row
again.
After changing to Rows
another Compile error: Variable not defined
. After OK:

you see that something is wrong with b =
.
After adding Dim b As Long
another Compile error: Variable not defined
. After OK:

you see that something is wrong with ActivateSheet
.
After changing to ActiveSheet
finally a Run-time error
:

and after Debug
:

Row
looks suspicious again.
After changing to Rows
another Run-time error
:

and after Debug
:

you see that something is wrong with ActiveSheet.Paste
, especially Paste
.
After changing to ActiveSheet.PasteSpecial
another Run-time error
:

and after Debug
:

you see something is wrong with Worksheets("Sale").Activate
.
Since Source.xlsx is active you consider changing to Workbooks("Purchase.xlsx").Worksheets("Sale").Activate
and everything's finally OK. Or is it?
The Code
Option Explicit
Sub copycells()
Dim a As Long
Dim b As Long
Dim i As Long
With ThisWorkbook.Worksheets("Sale")
a = .Cells(.Rows.Count, 2).End(xlUp).Row
For i = 2 To a
If .Cells(i, 6).Value = "Parmesh" Then
.Rows(i).Copy
With Workbooks("Source.xlsx").Worksheets("Billdetails")
b = .Cells(.Rows.Count, 2).End(xlUp).Row
.Cells(b + 1, 1).PasteSpecial
End With
End If
Next
' If Purchase.xlsx and ThisWorkbook are the same then use the following:
'.Cells(1).Select
End With
Application.CutCopyMode = False
' If Purchase.xlsx and ThisWorkbook are not the same then use the following:
'Workbooks("Purchase.xlsx").Worksheets("Sale").Cells(1, 1).Select
End Sub
' Assuming that you need only values and that "Thisworkbook" is "Purchase.xlsx"
Sub copyCellsValues()
Const SourceBook As String = "Source.xlsx"
Const SourceSheet As String = "Billdetails"
Const MainSheet As String = "Sale"
Const MainColumn As Long = 6
Const Criteria As String = "Parmesh"
Dim Sale As Worksheet
Dim Bill As Worksheet
Dim a As Long
Dim b As Long
Dim i As Long
Set Sale = ThisWorkbook.Worksheets(MainSheet)
Set Bill = Workbooks(SourceBook).Worksheets(SourceSheet)
a = Sale.Cells(Sale.Rows.Count, 2).End(xlUp).Row
b = Bill.Cells(Bill.Rows.Count, 2).End(xlUp).Row + 1
For i = 2 To a
If Sale.Cells(i, MainColumn).Value = Criteria Then
Bill.Rows(b).Value = Sale.Rows(i).Value
b = b + 1
End If
Next
End Sub