RESOLU - Utilisation de la fonction sumproduct en VBA

NeMoS

XLDnaute Junior
Bonjour à tous,

Afin de remplir un tableau assez conséquent, je souhaitais utiliser la fonction SUMPRODUCT mais via VBA.
J'ai écrit le code, et cela ne me renvoie pas d'erreur d'exécution en revanche le resultat est #NAME et non pas le calcul escompté...

Je vous joints le code (en partie) tel qu'écrit

Code:
fintablo = Sheets("calculs -to hide").Range("A" & Rows.Count).End(xlUp).Row
finmx = Worksheets("PRODUCT KNOWLEDGE").Range("A" & Rows.Count).End(xlUp).Row
i = 20

For i = 20 To fintablo
valeur = Worksheets("calculs -to hide").Range("B" & i).Value
       Set r = Sheets("PRODUCT KNOWLEDGE").Rows(2).Find(valeur, , xlValues, xlWhole)
       If Not r Is Nothing Then col = r.Column
        Set plage = Range(Cells(3, col), Cells(finmx, col))
        Worksheets("calculs -to hide").Range("c" & i).Value = Application.Evaluate("=SUMPRODUCT((PRODUCT KNOWLEDGE!e3:e350 =1)*(PRODUCT KNOWLEDGE!plage=1))")
next

Toutes les variables sont déclarées et initialisées.
Pour faire un essai j'ai remplacé la variable "plage" par une plage de cellules définie genre k3:k350 et le résultat est le même, donc je suppose que le problème vient réellement de la syntaxe de la fonction...et là je bloque

J'avoue que c'est toujours un peu galère de transposer des fonctions excel en VBA, mais si quelqu'un peut m'aider ce serait avec grand plaisir !!

En vous remerciant par avance
NeMoS
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Utilisation de la fonction sumproduct en VBA

Bonjour NeMos,

Pas testé, mais déjà corrigez en mettant le nom de la feuille entre guillemets anglais :

Code:
Application.Evaluate("=SUMPRODUCT(('PRODUCT KNOWLEDGE'!e3:e350 =1)*('PRODUCT KNOWLEDGE'!plage=1))")
A+
 

NeMoS

XLDnaute Junior
Re : Utilisation de la fonction sumproduct en VBA

Bonjour Job75,

Malheureusement, cela ne change pas le résultat (ou plutot le non-resultat).

Je crois que les guillements anglais sont propres à la syntaxe de Excel 2010....

Merci pour ton aide

NeMoS
 

NeMoS

XLDnaute Junior
Re : Utilisation de la fonction sumproduct en VBA

OK ...

Je vois pas trop pourquoi cela ne marcherait pas.
J'ai testé le code ligne par ligne et à priori le seul truc qui pourrait bloquer c'est la définition de "plage". Mais comme je l'ai mentionné au début, j'ai essayé le code en ignorant "plage" et en mettant des valeurs fixes...ce qui n'a rien changé.

Tant pis, merci d'avoir essayé.

NeMoS
 

job75

XLDnaute Barbatruc
Re : Utilisation de la fonction sumproduct en VBA

Re,

Avec ceci ce sera déjà mieux :

Code:
With Sheets("PRODUCT KNOWLEDGE")
  Set plage = .Range(.Cells(3, col), .Cells(finmx, col))
End With
Sheets("calculs -to hide").Range("c" & i) = Evaluate("=SUMPRODUCT(('PRODUCT KNOWLEDGE'!e3:e350 =1)*('PRODUCT KNOWLEDGE'!" & plage.Address & "=1))")
Pour définir plage, mieux vaut préciser la feuille...

Par ailleurs, pour que SUMPRODUCT fonctionne, il faut que plage ait la même dimension que E3:E350...

A vous de voir.

A+
A+
 

NeMoS

XLDnaute Junior
Re : Utilisation de la fonction sumproduct en VBA

OK, en effet deux grosses erreurs...

Si j'aurais pu ( aurais du) voir la première, j'avoue que je n'aurai jamais songé au problème de dimension des deux plages dans le sumproduct.

Merci beaucoup !!

Il ne me reste plus qu'à corriger et tester...

Encore merci

NeMoS
 

Discussions similaires

Statistiques des forums

Discussions
314 634
Messages
2 111 442
Membres
111 137
dernier inscrit
SANTA POLA