Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Intersect(Target, Range("B3:E34")) Is Nothing Then Exit Sub
Dim i As Integer
For i = 37 To 42
Range("B" & i).FormulaLocal = "=SOMMEPROD((Noms=A" & i & ")*Dettes)"
Range("C" & i).FormulaLocal = "=SOMMEPROD((Noms=A" & i & ")*$D$3:$D$33)"
Range("D" & i).FormulaLocal = "=SOMMEPROD((Noms=A" & i & ")*$D$3:$D$33)"
Range("E" & i).FormulaLocal = "=SOMME(B" & i & ":D" & i & ")"
Range("B37:E42").Value = Range("B37:E42").Value
Next
End Sub