Evaluate.SUMPRODUCT avec contraintes déterminées par variable

romrom

XLDnaute Nouveau
Salut le Forum !!!

Bon j'ai fouillé le google, ainsi que le forum, j'ai trouvé des choses intéressantes mais là je bloque....
Let's me explain : j'aimerais effectuer un SUMPRODUCT((plage= Variable)......). J'ai bien trouvé quelque chose sur le forum : https://www.excel-downloads.com/threads/resolu-vba-pb-avec-syntaxe-de-sumproduct.201369/.

J'ai exactement le même problème, seulement la solution proposée ne fonctionne pas chez moi.

mon code :

Dim tu
tu = Commande
i = 73

MsgBox Application.Evaluate("=SUMPRODUCT((C2:C" & i & "=""Commande"")*(L2:L73=""Soldé"")*(D2:D73))")
MsgBox Application.Evaluate("=SUMPRODUCT((C2:C" & i & "=""" & tu & """)*(L2:L73=""Soldé"")*(D2:D73))")

La 1er msgbox (figé) me donne 15 (résultat escompté)
La 2eme msgbox (avec variable "tu") me donne 0 (comme si "TU" n'était pas reconnu)

J'ai essayé de déclarer "tu" comme string, mettre seulement 2 guillemets, les deux en même temps, rien n'y fait... Je ne sais que faire. Si quelqu'un a une idée, je suis preneur.

Merci à vous

J'ai essayé
 

tototiti2008

XLDnaute Barbatruc
Re : Evaluate.SUMPRODUCT avec contraintes déterminées par variable

Bonsoir romrom,

Peut-être (il manquait 1 guillemet)

Code:
MsgBox Application.Evaluate("=SUMPRODUCT((C2:C" & i & "=""" & tu & """")*(L2:L" & i & "=""Soldé"")*(D2:D" & i & "))")
 

romrom

XLDnaute Nouveau
Re : Evaluate.SUMPRODUCT avec contraintes déterminées par variable

Salut Tototiti !!!

Merci pour ta réponse !!! Malheureusement ça ne doit pas être ça le problème... Si j'ai bien compris tu as rajouté un " après la variable. J'ai essayé comme ça, il m'a dit d'aller siffler là-haut sur la colline, ("erreur de compilation, syntaxe : )" en vrai). J'ai essayé de mettre 4 " autour de la variable mais là il a pas aimé du tout.

Merci quand même, i keep on trying

Bonsoir romrom,

Peut-être (il manquait 1 guillemet)

Code:
MsgBox Application.Evaluate("=SUMPRODUCT((C2:C" & i & "=""" & tu & """")*(L2:L" & i & "=""Soldé"")*(D2:D" & i & "))")
 

tototiti2008

XLDnaute Barbatruc
Re : Evaluate.SUMPRODUCT avec contraintes déterminées par variable

Re,

Oui, finalement il n'y a pas de guillemets en trop

Viens de tester ça chez moi avec succès

Code:
Sub test()
i = 464
tu = "toto"
MsgBox Application.Evaluate("=SUMPRODUCT((C2:C" & i & "=""" & tu & """)*(L2:L" & i & "=""Soldé"")*(D2:D" & i & "))")
End Sub

Donc ton problème vient de

Code:
tu = Commande

à changer en

Code:
tu = "Commande"
 

romrom

XLDnaute Nouveau
Re : Evaluate.SUMPRODUCT avec contraintes déterminées par variable

Yeeeeeeees Tototiti t'es un champion !!!!! ça marche niquel je te remercie !!! Pourtant j'étais sûr d'avoir déjà testé cette option. Quoi qu'il en soit merci à toi ça fonctionne !!
 

romrom

XLDnaute Nouveau
Re : Evaluate.SUMPRODUCT avec contraintes déterminées par variable

Si je peux me permettre d'abuser encore un peu ... Si ma variable est une date ? J'ai fais la même chose ( 3 " autour de la variable), ça marche mais il me renvoi 0, alors que le résultat devrait être 5. J'ai essayé avec 3 ", en dim ma variable date (fecha) as date et laissant 3 ", et la dernière tentatives que tu peux voir en bas. VOilà si toi ou qui que ce soit a une idée, il est le bienvenue. Merci d'avance les amis !!!

Dim tu
Dim fecha As Date
fecha = 25 / 3 / 2013
tu = "Commande"
i = 73

MsgBox Application.Evaluate("=SUMPRODUCT((BDD!C2:C" & i & " = """ & tu & """)*(BDD!H2:H" & i & "= "" & fecha & "")*1)")


PS : Sans "*(BDD!H2:H" & i & "= "" & fecha & "")" ma formule marche, et je me suis assuré que la colonne H est bien remplie de date et que celle que je cherche y figure.
 

tototiti2008

XLDnaute Barbatruc
Re : Evaluate.SUMPRODUCT avec contraintes déterminées par variable

Bonjour romrom,

en VBA, les dates doivent être entourées de # et écrites dans le format mm/jj/aaaa
donc un truc comme

Code:
fecha = #03/25/2013#

Après pour l'Evaluate, je n'ai pas testé mais je tenterais

Code:
MsgBox Application.Evaluate("=SUMPRODUCT((BDD!C2:C" & i & "=""" & tu & """)*(BDD!H2:H" & i & "=" & clng(fecha) & ")*1)")
 

Discussions similaires

Statistiques des forums

Discussions
312 241
Messages
2 086 526
Membres
103 242
dernier inscrit
Patoshick