Private Sub Worksheet_Change(ByVal Target As Range)
Dim P As Range, Q As Range, i&, j%, k&, v1, v2, n%
Set P = [B3].CurrentRegion
Set Q = [B11].CurrentRegion
Application.ScreenUpdating = False
Application.EnableEvents = False 'désactive les évènements
For i = 2 To P.Rows.Count
For j = 2 To P.Columns.Count
P(i, j) = ""
For k = 2 To Q.Rows.Count
If InStr(Q(k, 2).Text, P(1, j)) And P(1, j) <> "" Then
v1 = Q(k, 3).MergeArea(1) 'en cas de cellule fusionnée
If IsNumeric(CStr(v1)) And P(i, 1) <> "" Then
v2 = Q(k, 4).MergeArea(1) 'en cas de cellule fusionnée
n = InStr(v2, P(i, 1))
If n Then If Not IsNumeric(Mid(v2, n + Len(P(i, 1)), 1)) _
Then P(i, j) = P(i, j) + v1
End If
End If
Next k, j, i
Application.EnableEvents = True 'réactive les évènements
End Sub