SommeProd en VBA

Bonjour,
Pourquoi utiliser SOMMEPROD, alors qu’un simple SOMME.SI est suffisant

Sub sumProdVba()
  Dim Plage1 As Range
  Dim Plage2 As Range
  Dim Crite1
  Dim MaSomProd As Currency
  Set Plage1 = Range("A3:A20")
  Set Plage2 = Range("B3:B20")
  Crite1 = Range("E2").Value
  MaSomProd = Application.WorksheetFunction.SumIf(Plage1, Crite1, Plage2)
  Range("F2").Value = MaSomProd
End Sub

Après pour utiliser SOMMEPROD en VBA, un exemple

Sub sumProdVba()
  Dim MaSomProd As Currency
  MaSomProd = Evaluate("SumProduct((A3:A20 = E2) * (B3:B20))")
  Range("F3").Value = MaSomProd
End Sub

ou aussi

Sub sumProdVba()
  Dim Plage1 As String, Plage2 As String
  Dim Chaine As String, MaSomProd As Currency
  Plage1 = Range("A3:A20").Address
  Plage2 = Range("B3:B20").Address
  Chaine = Range("E2").Address
  MaSomProd = Evaluate("SumProduct(" & Plage2 & "*(" & Plage1 & "= " & Chaine & "))")
  Range("f4") = MaSomProd
End Sub
1 « J'aime »