Hey, Riccardo.
I've modified the code like below. Try it out.
Sub PuregeFile()
Dim vPar1 As Integer, vPar2 As Integer, vPar3 As Integer
Dim vMin1 As Integer, vMin2 As Integer, vMin3 As Integer
Dim vMax1 As Integer, vMax2 As Integer, vMax3 As Integer
Dim rng(17) As Range
Dim i As Integer, j As Integer
Dim ReadLine As String
Dim buf
Dim cnt1a As Integer, cnt1b As Integer, cnt1c As Integer
Dim cnt2 As Integer
vPar1 = Range("Y4"): vPar2 = Range("Y5"): vPar3 = Range("Y6")
vMin1 = Range("AV4"): vMin2 = Range("AV5"): vMin3 = Range("AV6")
vMax1 = Range("AX4"): vMax2 = Range("AX5"): vMax3 = Range("AX6")
For i = 0 To 16
Set rng(i) = Range("H10").Offset(, i * 3).Resize(22, 3)
Next i
Open ThisWorkbook.Path & "\ToPurgeFile.csv" For Input As #1
Open ThisWorkbook.Path & "\OutputFile.csv" For Output As #2
Do Until EOF(1)
Line Input #1, ReadLine
buf = Split(ReadLine, " ")
cnt1a = 0: cnt1b = 0: cnt1c = 0
For i = 0 To 16
cnt2 = 0
For j = 0 To 5
cnt2 = cnt2 + WorksheetFunction.CountIf(rng(i), buf(j))
Next j
Select Case cnt2
Case vPar1
cnt1a = cnt1a + 1
Case vPar2
cnt1b = cnt1b + 1
Case vPar3
cnt1c = cnt1c + 1
End Select
Next i
If (cnt1a >= vMin1 And cnt1a <= vMax1) And (cnt1b >= vMin2 And cnt1b <= vMax2) And (cnt1c >= vMin3 And cnt1c <= vMax3) Then
Print #2, ReadLine
End If
Loop
Close #2
Close #1
End Sub