Incrementation impossible avec SOMMEPROD(NB.SI(INDIRECT

Bonjour à tout le monde,

J'ai un petit soucis uniquement avec l'incrémentation de cette formule qui fonctionne très bien.

J'ai besoin de faire un NB.SI 3D qui n'existe pas à moins de contourner la formule avec celle ci (cela dit en passant, chose qui me fait halluciner qu'une commande aussi simple et dont la plupart des gens ont besoin ne puisse se faire !!!!).

Jusque là tout va bien j'ai appris et à peu près compris la formule. Seulement quand je tire vers le bas pour incrémenter la formule il me laisse la plage de calcul identique comme si il y avait les $. Sauf qu'ils n'y sont pas...............

SOMMEPROD(NB.SI(INDIRECT("'"&$E$4:$E$15&"'!B4:AF4");"X"))

L'idée étant que E4:E15 ne change pas parce que c'est la plage des noms de feuille (c'est pour ça qu'il y a les $) et B4:AF4 c'est la plage dans laquelle il faut rechercher et compter le nombre de fois où il y a X. Et donc en incrémentant vers le bas cela doit devenir B5:AF5 puis B6:AF6 etc etc...

Sauf que non.............................

Et question bonus, à quoi sert le ! car quand je le retire cela me fausse le calcul

Merci de votre aide

Bonjour,

En fait INDIRECT évalue du texte comme une référence. Ici, le ! est le lien entre la feuille et la plage (Feuil1!A1), puisque que j'imagine que vous avez des noms de feuille en E4:E15.

Edit : laissez tomber la proposition si vous l'avez lue... Je vais plutôt essayer de rechercher

Nouvelle proposition :

=SOMMEPROD(NB.SI(INDIRECT("'"&$E$4:$E$15&"'!B" & ligne($B4) & ":AF" & ligne($B4));"X"))

Cdlt,

Bonjour,

SOMMEPROD(NB.SI(INDIRECT("'"&$E$4:$E$15&"'!B4:AF4");"X"))

Comme ceci est entre guillemets, c'est considéré comme du texte par Excel et donc reproduit tel quel, c'est normal que ça ne s'incrémente pas :

"'!B4:AF4"

Si on veut que cette plage puisse s'incrémenter, il faudra donner à Excel matière à incrément (et donc pas du texte écrit en dur).

Une solution ici sera de faire plutôt :

SOMMEPROD(NB.SI(INDIRECT("'"&$E$4:$E$15&"'!B"&ligne(A4)&":AF"&ligne(A4));"X"))

La fonction ligne renverra la ligne de la référence entre parenthèses (A4 ici deviendra 4). Comme il s'agit d'une fonction et non de texte écrit en dur, ligne(A4) deviendra ligne(A5), etc

Non testé mais j'imagine que ça va marcher.

J'aime bien ton nouvel essai 3GB :D

Attention tulipe est dans le coin. Ça risque de tridactyler sec d'ici pas longtemps !

Merci ça marche super !!!!!

Ici, le ! est le lien entre la feuille et la plage (Feuil1!A1), puisque que j'imagine que vous avez des noms de feuille en E4:E15.

Oui 3GB effectivement dans cette plage c'est là qu'il y a les noms de feuille car de ce que j'ai compris il faut "créer une colonne" qui reprend tous les noms de feuilles. A priori on ne peut pas y déroger...

En tout cas merci à vous 2 JoyeuxNoel et 3GB puisque peut importe la solution apportée elles fonctionnent toutes les 2. Et aussi merci pour les explications, c'est sympa, ça aide à comprendre et à rechercher les erreurs et les solutions plus facilement quand on sait comment ça marche. Au top

Bonne journée

Rechercher des sujets similaires à "incrementation impossible sommeprod indirect"