Sumproduct en VBA
Résolu/Fermé
jeepipy
Messages postés
70
Date d'inscription
samedi 9 janvier 2010
Statut
Membre
Dernière intervention
9 août 2023
-
17 août 2011 à 15:27
jeepipy Messages postés 70 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 9 août 2023 - 20 août 2011 à 19:04
jeepipy Messages postés 70 Date d'inscription samedi 9 janvier 2010 Statut Membre Dernière intervention 9 août 2023 - 20 août 2011 à 19:04
A voir également:
- Sumproduct vba
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Mkdir vba ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Vba dépassement de capacité ✓ - Forum Excel
10 réponses
ccm81
Messages postés
10900
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
2 novembre 2024
2 425
Modifié par ccm81 le 19/08/2011 à 14:52
Modifié par ccm81 le 19/08/2011 à 14:52
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
Morgothal
Messages postés
1236
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
19 mai 2015
183
17 août 2011 à 15:35
17 août 2011 à 15:35
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" ?
jeepipy
Messages postés
70
Date d'inscription
samedi 9 janvier 2010
Statut
Membre
Dernière intervention
9 août 2023
155
17 août 2011 à 16:51
17 août 2011 à 16:51
tout à fait
Morgothal
Messages postés
1236
Date d'inscription
jeudi 22 avril 2010
Statut
Membre
Dernière intervention
19 mai 2015
183
17 août 2011 à 17:10
17 août 2011 à 17:10
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
jeepipy
Messages postés
70
Date d'inscription
samedi 9 janvier 2010
Statut
Membre
Dernière intervention
9 août 2023
155
18 août 2011 à 08:43
18 août 2011 à 08:43
en effet cela semble plus facile mais je voudrais faire une somme selon plusuieurs critères c'est pourquoi je voulais utiliser sumproduct
jeepipy
Messages postés
70
Date d'inscription
samedi 9 janvier 2010
Statut
Membre
Dernière intervention
9 août 2023
155
20 août 2011 à 09:47
20 août 2011 à 09:47
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
ccm81
Messages postés
10900
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
2 novembre 2024
2 425
20 août 2011 à 11:31
20 août 2011 à 11:31
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
jeepipy
Messages postés
70
Date d'inscription
samedi 9 janvier 2010
Statut
Membre
Dernière intervention
9 août 2023
155
20 août 2011 à 14:33
20 août 2011 à 14:33
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
ccm81
Messages postés
10900
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
2 novembre 2024
2 425
Modifié par ccm81 le 20/08/2011 à 17:52
Modifié par ccm81 le 20/08/2011 à 17:52
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
jeepipy
Messages postés
70
Date d'inscription
samedi 9 janvier 2010
Statut
Membre
Dernière intervention
9 août 2023
155
20 août 2011 à 19:04
20 août 2011 à 19:04
Merci beaucoup ccm81.
La 2ème solution fonctionne bien j'avais défini les noms de colonnes d'où une anomalie. Par contre la 1ere avec evaluate me met toujours #VALEUR...mais ce n'est pas grave. :)
Bonne soirée.
La 2ème solution fonctionne bien j'avais défini les noms de colonnes d'où une anomalie. Par contre la 1ere avec evaluate me met toujours #VALEUR...mais ce n'est pas grave. :)
Bonne soirée.