Function Rechv2Crit(clé1 As Range, clé2 As Range, Clé1Tbl As Range, Clé2Tbl As Range, RésultTbl As Range, messageErreur)
Application.Volatile
Set d = CreateObject("Scripting.Dictionary")
a = RésultTbl.Value
b = Clé1Tbl.Value
c = Clé2Tbl.Value
TbClé1 = clé1.Value
TbClé2 = clé2.Value
For i = LBound(a) To UBound(a)
d(b(i, 1) & "|" & c(i, 1)) = a(i, 1)
Next i
Dim temp(): ReDim temp(LBound(TbClé1) To UBound(TbClé1), 1 To 1)
For i = LBound(TbClé1) To UBound(TbClé1)
If d.exists(TbClé1(i, 1) & "|" & TbClé2(i, 1)) Then temp(i, 1) = d(TbClé1(i, 1) & "|" & TbClé2(i, 1)) Else temp(i, 1) = messageErreur
Next i
Rechv2Crit = temp
End Function