Private Sub Worksheet_Change(ByVal Target As Range)
Dim d As Object, matrice, i&, tablo, resu(), s, ub%, j%
Set d = CreateObject("Scripting.Dictionary")
matrice = Array("FAV.", "VERS", "CB")
For i = 0 To UBound(matrice): d(matrice(i)) = "": Next i
tablo = [A1].CurrentRegion.Resize(, 2)
ReDim resu(1 To UBound(tablo), 1 To 1)
For i = 2 To UBound(tablo)
s = Split(Application.Trim(tablo(i, 1)))
ub = UBound(s)
For j = 0 To ub
If d.exists(s(j)) Then
If j < ub Then resu(i, 1) = s(j + 1)
Exit For
End If
Next j, i
Application.EnableEvents = False
If FilterMode Then ShowAllData
With [C1]
resu(1, 1) = .Value
.Resize(i - 1) = resu
.Offset(i - 1).Resize(Rows.Count - i - .Row + 2).ClearContents
End With
Application.EnableEvents = True
End Sub