SommeProd en VBA

bonjour
je souhaite utiliser la fonction SommeProd en VBA mais j’arrive pas a trouver le bon code
après beaucoup d’essaie voici mon code final est qui ne fonctionne pas.

Option Explicit
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.SumProduct((Plage1 = Crite1) * (Plage2))
Range("F2").Value = MaSomProd
End Sub

Aidez moi Svp
Sommeprod en VBA.xlsm (20,8 Ko)

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 »

Mille merci Mr @Mimimathy pour votre explication et les exemples .

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.