Sub Test()
Dim i As Long
Dim j As Integer
Dim v As Variant
Application.ScreenUpdating = False
Worksheets("Body").Columns("E:E").Insert Shift:=xlToRight
Cells(3, 5) = "PO-Item-ASN" 'insertion d'une colonne pour constituer ma valeur
'supprime toutes les lignes dont la cellule D ne commence pas par M
For l = Range("D65536").End(xlUp).Row To 4 Step -1 'D65536
If InStr(Range("D" & l), "M") = 0 Then Rows(l).Delete
Next l
Nb = Range([D2], [D65536].End(xlUp)).Rows.Count
For i = 4 To Nb + 1
Valeur = Split(Cells(i, 4).Text, "/") 'split à /
'extrait les digits 4,5,6 des cellules de la colonne G
derligne = Range("G65000").End(xlUp).Row
For j = 4 To derligne + 1
maValeur = Mid(Range("G" & j).Value, 4, 3)
'constitution de ma valeur
Cells(i, 5).Value = Valeur(0) & "-" & maValeur & "-" & Cells(i, 24).Value & "-" & Cells(i, 34).Value
'recherche ma valeur
Cells(i, 11) = Application.VLookup(Cells(i, 5).Value, Workbooks("5-17").Sheets("5-17").Range("H2:W65536"), 16, False) 'définit la recherche
v = Application.VLookup(Cells(i, 5).Value, Workbooks("5-17.csv").Sheets("5-17").Range("H2:W65536"), 16, False)
Cells(i, 11) = IIf(IsError(v), "0", v)
Next j
Next i
Application.ScreenUpdating = True
End Sub