Private Sub Worksheet_Change(ByVal Target As Range)
Dim d As Object, t, i&, matrice()
Set d = CreateObject("Scripting.Dictionary")
d.CompareMode = vbTextCompare 'la casse est ignorée
Application.ScreenUpdating = False
'---liste sans doublon des concaténations en 1ère feuille---
t = Feuil1.[A2].CurrentRegion.Resize(, 12) 'CodeName Feuil1
For i = 2 To UBound(t)
d(Left(t(i, 3), 6) & t(i, 10) & t(i, 12)) = ""
Next
'---tableau matrice sur 2ème feuille---
t = [A1].CurrentRegion.Resize(, 7)
ReDim matrice(1 To UBound(t), 1 To 1)
For i = 2 To UBound(t)
If Not d.exists(t(i, 3) & t(i, 6) & t(i, 7)) Then matrice(i, 1) = True
Next
'---restitution en 3ème feuille---
With Feuil3.[A1].Resize(UBound(t)) 'CodeName Feuil3
.Parent.Columns(1).ClearContents
.Value = matrice
.Name = "Matrice" 'plage nommée pour la MFC
End With
End Sub