[COLOR="DarkSlateGray"][B]Private Sub toto()
Dim i&, j&, nVal&
Dim oRef, [COLOR="SeaGreen"]oDat1[/COLOR], [COLOR="SeaGreen"]oDat2[/COLOR], [COLOR="Red"]oVal1[/COLOR], [COLOR="Red"]oVal2[/COLOR]
On Error Resume Next
[COLOR="Red"]Range("RES_2").ClearContents
Range("RES_1").ClearContents[/COLOR]
On Error GoTo E
oRef = Range("REF").Resize(Range("REF").Rows.Count, 2).Value
On Error GoTo 0
ReDim Preserve oRef(1 To UBound(oRef, 1), 1 To 1)
[COLOR="SeaGreen"]oDat1 = Range("TABLE_1").Value
oDat2 = Range("TABLE_2").Value[/COLOR]
[COLOR="Red"]ReDim oVal1(1 To 1, 1 To 1)
ReDim oVal2(1 To 1, 1 To 1)[/COLOR]
For i = 1 To UBound(oRef, 1)
For j = 1 To UBound(oDat1, 1)
If oRef(i, 1) = oDat1(j, 1) Then
nVal = nVal + 1
[COLOR="Red"]ReDim Preserve oVal1(1 To 1, 1 To nVal)
ReDim Preserve oVal2(1 To 1, 1 To nVal)
oVal1(1, nVal) = [COLOR="SeaGreen"]oDat1(j, 1)[/COLOR]
oVal2(1, nVal) = [COLOR="SeaGreen"]oDat2(j, 1)[/COLOR][/COLOR]
End If
Next j
Next i
[COLOR="Red"]Range("RES_2").Resize(WorksheetFunction.Max(1, nVal), 1).Value = WorksheetFunction.Transpose(oVal2)
Range("RES_1").Resize(WorksheetFunction.Max(1, nVal), 1).Value = WorksheetFunction.Transpose(oVal1)[/COLOR]
E:
End Sub[/B][/COLOR]