Private Sub Worksheet_Change(ByVal Target As Range)
Dim xcol, n&, dico1, dico2, t, t0, i&, DeuxPlus As Boolean, xkey
If Intersect(Columns("k:o"), Target) Is Nothing Then Exit Sub
For Each xcol In Columns("k:o")
If Not DeuxPlus Then
n = xcol.Cells(Rows.Count, 1).End(xlUp).Row
Set dico1 = CreateObject("scripting.dictionary")
t = xcol.Resize(n)
For i = 2 To UBound(t): dico1(t(i, 1)) = "": Next
DeuxPlus = True
Else
n = xcol.Cells(Rows.Count, 1).End(xlUp).Row
Set dico2 = CreateObject("scripting.dictionary")
t = xcol.Resize(n)
For i = 2 To UBound(t): dico2(t(i, 1)) = "": Next
For Each xkey In dico1.keys
If Not dico2.exists(xkey) Then dico1.Remove xkey
Next xkey
End If
Next xcol
Columns("p").ClearContents
Range("p1") = "RESULTAT"
If dico1.Count > 0 Then Range("p2").Resize(dico1.Count) = Application.Transpose(dico1.keys)
End Sub