Private Sub Worksheet_Change(ByVal target As Range)
Dim cible As Range, T As Range, resu(), col As Variant, i&, n&
Set cible = [B4]
Set T = [A16:E20]
ReDim resu(1 To T.Rows.Count - 1, 1 To 1)
col = Application.Match(cible, T.Rows(1), 0)
Application.EnableEvents = False 'désactive les évènements
If IsNumeric(col) Then
For i = 2 To T.Rows.Count
If LCase(T(i, col)) = "x" Then n = n + 1: resu(n, 1) = T(i, 1)
Next
End If
cible(2).Resize(UBound(resu)) = resu
Application.EnableEvents = True 'réactive les évènements
End Sub