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