Si vous préférez l'utilisation d'un tableau à 2 dimensions
Sub Repet2()
Dim i As Long, j As Long, Col_Dest As Long
Application.ScreenUpdating = False
Range("AN2:AZZ31").ClearContents
Col_Dest = 53 ' première colonne de destination: BA
For i = 4 To 31 'de la ligne 4 à 31
Tablo = Range(Cells(i, "B"), Cells(i, "U"))
n = 0
If Cells(i, "A") >= Range("Y12").Value Then
For j = 2 To 21 'de la colonne B à la colonne U
On Error Resume Next
If Not IsError(Application.Match(Cells(i, j), Range("A2:AK2"), 0)) Then
Tablo(i, j) = Cells(i, j)
n = n + 1
End If
Next j
Range(Cells(i, Col_Dest), Cells(i, Col_Dest + n - 1)).Value = Tablo
End If
Next i
End Sub