Sumproduct en VBA
Résolu
jeepipy
Messages postés
70
Date d'inscription
Statut
Membre
Dernière intervention
-
jeepipy Messages postés 70 Date d'inscription Statut Membre Dernière intervention -
jeepipy Messages postés 70 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je cherche juste à trouver l'quivalent de la fonction sommeprod mais en vba.
DOnc j'applique la fonction sumproduct mais j'ai du mal à l'utiliser.
Je voudrais faire la somme de ma colonne G pour les observations ayant le champ de la colonne F complété par un "o".
Je vous remercie pour vos retours et vous joins le code:
Sub total()
' Ajout de la ligne "Total"
Dim ShR As Worksheet
Set ShR = Sheets("Restitution")
Dim ShB As Worksheet
Set ShB = Sheets("base")
Dim vol As Range
Set vol = ShB.Range("G2:G10000")
Dim crit As Range
Set crit = ShB.Range("E2:E10000")
ShR.Range("D14") = Evaluate("=SumProduct((ShB.Range(F2:F100) = " & o & "), vol)")
End Sub
Je cherche juste à trouver l'quivalent de la fonction sommeprod mais en vba.
DOnc j'applique la fonction sumproduct mais j'ai du mal à l'utiliser.
Je voudrais faire la somme de ma colonne G pour les observations ayant le champ de la colonne F complété par un "o".
Je vous remercie pour vos retours et vous joins le code:
Sub total()
' Ajout de la ligne "Total"
Dim ShR As Worksheet
Set ShR = Sheets("Restitution")
Dim ShB As Worksheet
Set ShB = Sheets("base")
Dim vol As Range
Set vol = ShB.Range("G2:G10000")
Dim crit As Range
Set crit = ShB.Range("E2:E10000")
ShR.Range("D14") = Evaluate("=SumProduct((ShB.Range(F2:F100) = " & o & "), vol)")
End Sub
10 réponses
bonjour
c'est peut être un pb de guillemet (en ASCII > chr(34)) qu'il faut arriver à caser
les trois instructions suivantes donnent la somme des cellules de la plage B1:B5 lorsque il y a un "o" sur la même ligne dans la plage A1:A5
1. donne =SOMMEPROD(($A$1:$A$5="o")*$B$1:$B$5) en B7
Range("B7").FormulaLocal = "=SOMMEPROD(($A$1:$A$5=" & Chr(34) & "o" & Chr(34) & ")*$B$1:$B$5)"
2. donne le résultat du sommeprod en B8
Range("B8").Value = Evaluate("=sumproduct(($A$1:$A$5=" & Chr(34) & "o" & Chr(34) & ")*$B$1:$B$5)"))
3. idem sans chr(34)
Range("B9").Value = Evaluate("=sumproduct(($A$1:$A$5=" & """o""" & ")*$B$1:$B$5)")
bonne suite
c'est peut être un pb de guillemet (en ASCII > chr(34)) qu'il faut arriver à caser
les trois instructions suivantes donnent la somme des cellules de la plage B1:B5 lorsque il y a un "o" sur la même ligne dans la plage A1:A5
1. donne =SOMMEPROD(($A$1:$A$5="o")*$B$1:$B$5) en B7
Range("B7").FormulaLocal = "=SOMMEPROD(($A$1:$A$5=" & Chr(34) & "o" & Chr(34) & ")*$B$1:$B$5)"
2. donne le résultat du sommeprod en B8
Range("B8").Value = Evaluate("=sumproduct(($A$1:$A$5=" & Chr(34) & "o" & Chr(34) & ")*$B$1:$B$5)"))
3. idem sans chr(34)
Range("B9").Value = Evaluate("=sumproduct(($A$1:$A$5=" & """o""" & ")*$B$1:$B$5)")
bonne suite
Bonjour,
Je ne suis pas sûr de comprendre, tu voudrais sommer toutes les lignes de ta colonne G, là où dans la colonne F il y a "o" ?
Je ne suis pas sûr de comprendre, tu voudrais sommer toutes les lignes de ta colonne G, là où dans la colonne F il y a "o" ?
Pourquoi alors ne pas utiliser SUMIF plutôt que SUMPRODUCT?
C'est peut être une fonction plus aisée à manipuler
C'est peut être une fonction plus aisée à manipuler
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
en effet cela semble plus facile mais je voudrais faire une somme selon plusuieurs critères c'est pourquoi je voulais utiliser sumproduct
Bonjour Ccm81,
je te remercie pour cette réponse bien détaillée mais j ai essayé de l adapter pour mon programme mais cela ne marche pas. Problème de parenthèse apparemment. Cela fonctionne bien sur 2 feuilles différentes?
ma ligne de code:
Sheets("Restitution").Range("D14").Value = Evaluate("=sumproduct((Sheets("base").Range($F$1:$F$5)=" & """o""" & ")*(Sheets("base").Range($G$1:$G$5))")
Merci en tout cas
je te remercie pour cette réponse bien détaillée mais j ai essayé de l adapter pour mon programme mais cela ne marche pas. Problème de parenthèse apparemment. Cela fonctionne bien sur 2 feuilles différentes?
ma ligne de code:
Sheets("Restitution").Range("D14").Value = Evaluate("=sumproduct((Sheets("base").Range($F$1:$F$5)=" & """o""" & ")*(Sheets("base").Range($G$1:$G$5))")
Merci en tout cas
re
une solution: tu nommes les plages, ce qui t'affranchit des noms de feuille dans les instructions
une autre idée, utiliser FormulaLocal qui te permet de faire la même chose en Excel francisé
bonne suite
une solution: tu nommes les plages, ce qui t'affranchit des noms de feuille dans les instructions
une autre idée, utiliser FormulaLocal qui te permet de faire la même chose en Excel francisé
Dim plage1 As Range, plage2 As Range Set plage1 = Sheets("base").Range("$A$1:$A$5") Set plage2 = Sheets("base").Range("$B$1:$B$5") Sheets("Restitution").Range("D14").Value = Evaluate("=sumproduct((plage1=" & """o""" & ")*plage2)") Sheets("Restitution").Range("D15").FormulaLocal = "=SOMMEPROD((plage1=" & """o""" & ")*plage2)"
bonne suite
Re,
vraiment merci pour ta patience mais...il y a toujours un mais. :) ...même si je n'ai plus de message d'erreur les cellules D14 et D15 se remplissent avec un très joli:
NOM?
A quoi est-ce du?
Aussi pourquoi faut il autant de guillements autour du" o" .
Merci
vraiment merci pour ta patience mais...il y a toujours un mais. :) ...même si je n'ai plus de message d'erreur les cellules D14 et D15 se remplissent avec un très joli:
NOM?
A quoi est-ce du?
Aussi pourquoi faut il autant de guillements autour du" o" .
Merci
re
es tu sûr d'avoir nommé les plages dans ta feuille (insertion/nom/définir)
un essai avec 6 possibilités
pour les guillemets quand on en veut 1 (autour de la valeur o) il faut le mettre entre ... guillemets ou utiliser chr(34)
https://www.cjoint.com/?0HurTvK9y9P
bonne suite
es tu sûr d'avoir nommé les plages dans ta feuille (insertion/nom/définir)
un essai avec 6 possibilités
pour les guillemets quand on en veut 1 (autour de la valeur o) il faut le mettre entre ... guillemets ou utiliser chr(34)
https://www.cjoint.com/?0HurTvK9y9P
bonne suite