SUMPRODUCT erreur #VALUE

Bonjour tout le monde,

Avant tout, je suis vraiment désolé de venir avec une question sur cette fonction. J'ai pu voir que beaucoup de topics traite du sujet mais je butte encore et toujours sur la même formule.

J'ai un classeur contenant une quinzaines de feuilles, l'une contient des données brutes, les autres un résumé de ces données succursale par succursale

La feuille "data" contient 4 colonnes :

Colonne A : numéro de succursale

Colonne B : date

Colonne C : nombre d'heure

Colonne D : Code de deux ou trois lettres

Voici ma formule :

=SUMPRODUCT((data!A:A=A2)*(MONTH(data!B:B)=B2)*(data!D:D={"AD","ADB","ADM","AMB"})*(data!C:C))

En A2 sur ma feuille "résumé" est repris le numéro de la succursale

En B2 sur ma feuille "résumé" est repris le mois (1 = janvier) Le but sera d'étendre aux autres mois une fois que la formule fonctionnera. En B3 se trouvera alors 2 pour février et ainsi de suite.

Donc avec ma formule, j'essaie d'afficher la somme des heures pour les codes repris entre les {} pour la succursale dont le numéro de référence se trouve en A2 sur ma feuille "résumé" et dans la colonne A dans la feuille "data".

Voila, j'espère que j'ai été assez précis et surtout compréhensible (pas toujours évident), d'avance un tout grand merci pour votre aide et bien évidemment s'il faut des précisions supplémentaires je suis disponible.

93test-sumproduct.xlsx (175.32 Ko)

Bonjour,

Sans fichier ... tu demandes en fait ... de la voyance ...

Cela dit, une première remarque ...avec sumproduct() ... il faut définir les plages ... data!A2:A1500

Oups ^^

Désolé, j'avais un peu peur de partager le fichier vu qu'il contient des données à caractère privé, mais voila le fichier est modifié pour l'exemple.

J'ai ajouté la plage de critère mais malheureusement mon erreur persiste.

Quoi qu'il en soit déjà merci pour ton aide !

Bonjour,

Comme indiqué par James007, que je salue au passage, il est préférable d'utiliser cette formule en B8 par exemple :

=SOMMEPROD((data!A2:A7016=A2)*(MOIS(data!B2:B7016)=B2)*(data!D2:D7016={"AD"."ADB"."ADM"."AMB"})*(data!C2:C7016))

Ultérieurement vous pourrez utiliser des noms de plages dynamiques.

Re,

Salut JFL

JFL t'a donné la solution ...

Ci-joint ton fichier test ...

P.S. Attention au séparateur de liste ...qui semble être une virgule ... et non un point

87test-sumproduct.xlsx (173.97 Ko)
James007 a écrit :

Re,

Salut JFL

JFL t'a donné la solution ...

Ci-joint ton fichier test ...

P.S. Attention au séparateur de liste ...qui semble être une virgule ... et non un point

Je viens justement de tester et effectivement j'ai vu que le problème venait des séparateurs

Quelque part ça me rassure, je n'avais pas tout faux

Un tout tout grand merci à vous deux !!!

Re,

Merci pour tes remerciements ..

Bonjour à tous,

Petite précision : depuis 2007 on peut donner des colonnes entières pour les formules matricielles.

Aussi rapide, excel n'utilisera que la plage utile.

eric

eriiic a écrit :

Bonjour à tous,

Petite précision : depuis 2007 on peut donner des colonnes entières pour les formules matricielles.

Aussi rapide, excel n'utilisera que la plage utile.

eric

salut Eric ...

Ce que c'est dur les habitudes bien ancrées ...

Bonsoir eriiic

eriiic a écrit :

Petite précision : depuis 2007 on peut donner des colonnes entières pour les formules matricielles.

Aussi rapide, excel n'utilisera que la plage utile.

eric

Cela ne vaut que pour les formules matricielles ?

Car, depuis que j'emploie des noms de plages dynamiques dans mes formules utilisant la fonction SOMMEPROD la "vélocité" d'Excel est décuplée par rapport à l'utilisation de colonnes entières.

Cela ne vaut que pour les formules matricielles ?

Oui, pour les non matricielles on pouvait déjà mettre des colonnes entières.

Sommeprod() est matricielle bien qu'avec une validation normale.

Pour ce qui est du temps, ce n'est pas si simple.

Par acquis de conscience j'ai mesuré.

Pour des plages de 10000 lignes, =SOMMEPROD((B:B)*(C:C)) en passant les colonnes entières mets 0.07 s de plus qu'en passant des noms dynamiques.

60 fois plus lent d'accord, mais 7/100s reste acceptable pour un truc vite fait où il n'y a pas des centaines de sommeprod()

Par contre, toujours en passant les colonnes entières, le temps varie peu selon le nombre de lignes des plages contrairement aux noms dynamique où c'est proportionnel. Le temps perdu baisse avec le nombre de lignes.

A partir de 1 millions de lignes c'est plus rapide de passer les colonnes entières.

Plus facile de se rendre compte avec un tableau :

2015 06 13 00 15 33

Mais bon, c'était surtout pour préciser que sur 2003 on ne pouvait pas du tout, et que c'est accepté à partir de 2007.

On peut garder les bonnes habitudes, 1000000 lignes c'est rare

eric

Bonjour à toutes et tous,

Bonjour Eriiic !

Grand merci pour ces précisions !

En l’occurrence, mes données sont sur 13000 lignes (en moyenne) et effectivement j'ai au minimum une centaine de SOMMEPROD() dans mon ficher. Votre tableau confirme mon ressenti empirique de l'écart entre colonne et plages dynamiques.

Et la "lisibilité" des formules via des plages nommées est meilleure.

Rechercher des sujets similaires à "sumproduct erreur value"