Sub test()
Dim c As Range, nLig As Long, t#, x#
Application.ScreenUpdating = False
nLig = Split(ActiveSheet.UsedRange.Address, "$")(4)
With Range("IV2:IV" & nLig)
.FormulaR1C1 = "=R[-1]C+IF(RC11=R[-1]C11,0,1)"
.Value = .Value
End With
For t = 1 To Application.Max(Range("IV:IV"))
Set Zonerech = Range("A" & Application.Match(t, Range("IV:IV"), 0) & ":T" & Application.Match(t, Range("IV:IV"), 0) + Application.CountIf(Range("IV:IV"), t) - 1)
For x = 1 To 20
Set c = Intersect(Columns(x), Zonerech)
With Cells(nLig + t, x)
.FormulaArray = "=MIN(IF(NOT(ISBLANK(" & c.AddressLocal & ")),ROW(" & c.AddressLocal & ")))"
If .Value > 0 Then .Value = Cells(.Value, x) Else .Value = ""
End With
Next x
Next t
Range("A2:T" & nLig).Delete xlUp
Range("IV:IV").Clear
Application.ScreenUpdating = True
End Sub