Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim d As Object, r As Range
Application.EnableEvents = False
With Sheets("Com ref L1 ")
Set d = CreateObject("Scripting.Dictionary")
For Each r In .[INTER]
If r <> "" Then d(UCase(r)) = ""
Next
For Each r In Sheets("Com ref L2").[INTER]
If r <> "" Then d(UCase(r)) = ""
Next
If d.Count Then _
.[AF4].Resize(d.Count) = Application.Transpose(d.keys)
Set r = .Range(.[AF4].Offset(d.Count), .Range("AF" & .Rows.Count))
Set r = Intersect(r, .[AF4].CurrentRegion)
If Not r Is Nothing Then r.ClearContents 'effacement sous la liste
d.RemoveAll 'RAZ
For Each r In .[PALETTE]
If r <> "" Then d(UCase(r)) = ""
Next
For Each r In Sheets("Com ref L2").[PALETTE]
If r <> "" Then d(UCase(r)) = ""
Next
If d.Count Then _
.[AJ4].Resize(d.Count) = Application.Transpose(d.keys)
Set r = .Range(.[AJ4].Offset(d.Count), .Range("AJ" & .Rows.Count))
Set r = Intersect(r, .[AJ4].CurrentRegion)
If Not r Is Nothing Then r.ClearContents 'effacement sous la liste
End With
Application.EnableEvents = True
End Sub