Erreur INDIRECT & SOMMEPROD + DECALER

Bonjour à tous,

Je rencontre des difficultés sur une formule globale dont j'ai isolé la partie qui me pose problème.

Ceci code fonctionne très bien :

=SOMMEPROD((DECALER(B1158;-1;4;-PROF_NB_RESSOURCES_SPRINT+1))*(DECALER(B1158;-1;15;-PROF_NB_RESSOURCES_SPRINT+1)))

j'aimerais simplement pouvoir rendre dynamique la formule en fonction de la cellule où elle se trouve.

J'ai utilisé pour cela la fonction INDIRECT pour remplacer dynamiquement le B1158

=SOMMEPROD((DECALER(INDIRECT("B" & LIGNE());-1;4;-PROF_NB_RESSOURCES_SPRINT+1))*(DECALER(INDIRECT("B" & LIGNE());-1;15;-PROF_NB_RESSOURCES_SPRINT+1)))

Avec ce code, j'ai une erreur #VALEUR

Cela doit être lié à la fonction SOMMEPROD car ce code (qui fait aussi partie de ma formule globale) fonctionne sans soucis

=SOMME(DECALER(INDIRECT("B" & LIGNE());-1;4;-PROF_NB_RESSOURCES_SPRINT+1))

Je ne comprends pas ce qui gène la fonction SOMMEPROD avec le INDIRECT.

Un grand merci pour vos éclaircissements

Bonjour,

pour moi pas de soucis avec votre première formule : il n'y a pas de verrouillage du numéro de ligne par l'adjonction d'un "$" donc si la formule est copiée trois ligne plus bas alors c'est bien B1161 soit trois lignes plus bas.

Ce qui revient à INDIRECT("B" & LIGNE()).... Non ?

@ bientôt

LouReeD

Oui mais je ne parlais pas d'un simple copier coller de la cellule

Cette formule peut être utilisée sur d'autres classeurs et dans ce cas, on copie le texte de la formule que l'on colle sur les autres classeurs. Je modifie la ligne en cours et je copie colle ensuite, ça fonctionne oui sauf que de base, ma formule est beaucoup plus grosse et c'est bien plus fastidieux qu'il n'y parait et ce n'est pas nécessairement moi qui fait la manip (je suis un habitué d'Excel mais ce n'est pas le cas de tous mes collègues )

Dans l'absolu, rien de bien bloquant, mon message n'était pas destiné à résoudre une situation bloquante mais à comprendre une erreur dans l'utilisation de mes formules.

Je ne m'explique pas pourquoi le INDIRECT ne fonctionne pas dans un SOMMEPROD et ça me chiffonne (et j'aime bien comprendre) : c'est bien là l'objet de mon message

Mais si vous faites une copie de formule et que la structure de la feuille d'arrivée est la même, pourquoi coller le "TEXTE" de la formule ?

Il suffit de copier la formule :

Copie de la formule de la cellule source, changement de feuille, sélection de la plage où doit être coller la formule, clic droit, et clic sur l'icône où il y a "fx", à ce moment là la formule est coller en tant que formule et non pas de TEXTE de formule, et l'incrémentation des ligne de "B" se fait automatiquement.

@ bientôt

LouReeD

Comme je le précisais, ce n'est pas un réel problème, je sais me débrouiller autrement oui

J'aimerais simplement comprendre (et c'est bien, encore une fois l'objet de mon message ici) pourquoi ce comportement du indirect dans le sommprod...

C'est peut-être tout simplement qu'il faut faire l'inverse :

ne pas décaler l'indirect, mais trouver l'indirect du decaler...

@ bientôt

LouReeD

Je ne suis pas sur de comprendre

Je veux décaler à partir d'une référence que je souhaite dynamique. Inverser le indirect et le décaler enlèvera peut être l'erreur (mais cela reste à voir) mais fonctionnellement parlant, ça n'a rien à voir...

J'ai loupé un truc ?

J'ai fait un autre test :

En partant de A1, j'écris 1,2,3,4,5,6 en colonne

En partant de A2, j'écris 2,3,4,5,6,7 en colonne

en D1, je mets la formule suivante :

=SOMMEPROD(A1:A6*B1:B6)

résultat : 112

en E1 je mets la formule suivante :

=SOMMEPROD(DECALER(C1;0;-2;6)*DECALER(C1;0;-1;6))

résultat : 112

en F1 je mets la formule suivante :

=SOMMEPROD(DECALER(INDIRECT("C" & LIGNE());0;-2;6)*DECALER(INDIRECT("C" & 1);0;-1;6))

résultat : #VALEUR

par contre, cette formule fonctionne

=SOMMEPROD(DECALER(INDIRECT("C" & 1);0;-2;6)*DECALER(INDIRECT("C" & 1);0;-1;6))

Il semblerait donc que ce soit la fonction ligne()qui pose un soucis et pas la fonction indirect comme je le soupçonnais au départ.

je joins le fichier d'exemple

et en mettant LIGNE(1:6) ?

@ bientôt

LouReeD

ça ne change rien

Par contre un LIGNES($1:1) fonctionne mais je perd tout objectif de récupérer la ligne en cours dynamiquement...

Rechercher des sujets similaires à "erreur indirect sommeprod decaler"