Function Coche(plage As Range, r As Range, sep As String) As String
Dim s, ub As Integer, n As Integer, e, i As Variant
For Each r In r
If LCase(r) = "oui" Then Coche = "X": Exit Function
s = Split(r, sep)
ub = UBound(s) + 1
If ub Then
n = 0
For Each e In s
i = Application.Match(e, plage.Columns(1), 0)
If IsNumeric(i) Then If LCase(plage(i, 2)) = "oui" Or LCase(plage(i, 3)) = "oui" Then n = n + 1
Next
If n = ub Then Coche = "X": Exit Function
End If
Next
End Function