Private Sub Worksheet_Activate()
Dim resu, source, d As Object, i&, poids$, s, j&, lig&, sk, OK As Boolean, k%
resu = [A1].CurrentRegion.Resize(, 6)
source = Sheets("Correspondance").[A1].CurrentRegion.Resize(, 4).Value2
Set d = CreateObject("Scripting.Dictionary")
'---mémorisation du tableau source
For i = 2 To UBound(source)
d(CStr(source(i, 1))) = d(CStr(source(i, 1))) & " " & i 'liste des numéros de lignes
Next i
'---tableau resu---
For i = 2 To UBound(resu)
poids = Replace(resu(i, 2), ",", ".")
s = Split(d(CStr(resu(i, 3))))
For j = 1 To UBound(s)
lig = Val(s(j))
If source(lig, 2) = "-" Then
resu(i, 4) = source(lig, 3)
resu(i, 5) = source(lig, 4)
Exit For
Else
sk = Split(Replace(Replace(Replace(source(lig, 2), "kg", ""), "l", ""), ",", "."), "et")
OK = True
For k = 0 To UBound(sk)
If Asc(sk(k)) = 61 Then sk(k) = "<=" & Mid(sk(k), 2) 'le caractère <= n'est pas reconnu...
If Not Evaluate(poids & sk(k)) Then OK = False: Exit For
Next k
If OK Then
resu(i, 4) = source(lig, 3)
resu(i, 5) = source(lig, 4)
Exit For
End If
End If
Next j, i
'---restitution---
[D1].Resize(UBound(resu)) = Application.Index(resu, , 4)
[E1].Resize(UBound(resu)) = Application.Index(resu, , 5)
End Sub