Function Compare(plage1 As Range, plage2 As Range)
Dim t, d As Object, i&, ncol%, j%, a, b
t = plage1
Set d = CreateObject("Scripting.Dictionary")
For i = 2 To UBound(t)
If t(i, 2) <> "" Then d(t(i, 1)) = t(i, 2)
Next i
t = plage2
ncol = UBound(t, 2)
For i = 2 To UBound(t)
If d.exists(t(i, 1)) Then
For j = 2 To ncol
If t(i, j) <> "" Then d.Remove t(i, 1): Exit For
Next j
End If
Next i
ReDim t(plage1.Rows.Count - 1, 1) 'base 0
If d.Count Then
a = d.keys: b = d.items
For i = 0 To UBound(a): t(i, 0) = a(i): t(i, 1) = b(i): Next i 'transposition
End If
For i = d.Count To UBound(t): t(i, 0) = "": t(i, 1) = "": Next i
Compare = t 'matrice
End Function