Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim TNom(), TDon(), TLCol(1 To 4) As Long, TRés(1 To 100, 1 To 10), L As Long, C As Long, LR As Long
If Target.Address <> "$AJ$2" Then Exit Sub
TNom = Me.[B5:B121].Value
TDon = Me.[C5:C121].Offset(, Target.Value).Value
For L = 1 To UBound(TDon, 1)
If IsNumeric(TDon(L, 1)) Then
C = TDon(L, 1)
If C >= 1 And C <= 4 Then
LR = TLCol(C) + 1: TLCol(C) = LR
TRés(LR, Choose(C, 1, 7, 10, 4)) = TNom(L, 1)
End If: End If: Next L
Me.[AL2:AU25].Value = TRés
End Sub