Problème de longueur de formule

Résolu/Fermé
DadKiller Messages postés 10 Date d'inscription lundi 13 décembre 2010 Statut Membre Dernière intervention 26 septembre 2016 - 26 sept. 2016 à 16:19
DadKiller Messages postés 10 Date d'inscription lundi 13 décembre 2010 Statut Membre Dernière intervention 26 septembre 2016 - 26 sept. 2016 à 18:32
Bonjour à toutes et à tous,

Dans mon tableau Excel 2003 j'ai un petit problème de formule trop longue.
La formule est la suivantes :

=SI(ET(A7="x";D7="AAAAA");(SOMME(R7)*Tarif!$D$33+SOMME(T7)*Tarif!$D$34+SOMME(V7)*Tarif!$D$35+SOMME(X7)*Tarif!$D$36+SOMME(Z7)*Tarif!$D$37+SOMME(AB7)*Tarif!$D$38+SOMME(AD7)*Tarif!$D$39+SOMME(AF7)*Tarif!$D$40+SOMME(AH7)*Tarif!$D$41+SOMME(AJ7)*Tarif!$D$42+SOMME(AL7)*Tarif!$D$43+SOMME(AN7)*Tarif!$D$44+SOMME(AP7)*Tarif!$D$45+SOMME(AR7)*Tarif!$D$46);SI(ET(A7="x";D7="BBBBB");(SOMME(R7)*Tarif!$I$33+SOMME(T7)*Tarif!$I$34+SOMME(V7)*Tarif!$I$35+SOMME(X7)*Tarif!$I$36+SOMME(Z7)*Tarif!$I$37+SOMME(AB7)*Tarif!$I$38+SOMME(AD7)*Tarif!$I$39+SOMME(AF7)*Tarif!$I$40+SOMME(AH7)*Tarif!$I$41+SOMME(AJ7)*Tarif!$I$42+SOMME(AL7)*Tarif!$I$43+SOMME(AN7)*Tarif!$I$44+SOMME(AP7)*Tarif!$I$45+SOMME(AR7)*Tarif!$I$46);SI(ET(A7="x";D7="CCCCC");(SOMME(R7)*Tarif!$J$33+SOMME(T7)*Tarif!$J$34+SOMME(V7)*Tarif!$J$35+SOMME(X7)*Tarif!$J$36+SOMME(Z7)*Tarif!$J$37+SOMME(AB7)*Tarif!$J$38+SOMME(AD7)*Tarif!$J$39+SOMME(AF7)*Tarif!$J$40+SOMME(AH7)*Tarif!$J$41+SOMME(AJ7)*Tarif!$J$42+SOMME(AL7)*Tarif!$J$43+SOMME(AN7)*Tarif!$J$44+SOMME(AP7)*Tarif!$J$45+SOMME(AR7)*Tarif!$J$46);SI(ET(A7="x";D7="DDDDD");(SOMME(R7)*Tarif!$K$33+SOMME(T7)*Tarif!$K$34+SOMME(V7)*Tarif!$K$35+SOMME(X7)*Tarif!$K$36+SOMME(Z7)*Tarif!$K$37+SOMME(AB7)*Tarif!$K$38+SOMME(AD7)*Tarif!$K$39+SOMME(AF7)*Tarif!$K$40+SOMME(AH7)*Tarif!$K$41+SOMME(AJ7)*Tarif!$K$42+SOMME(AL7)*Tarif!$K$43+SOMME(AN7)*Tarif!$K$44+SOMME(AP7)*Tarif!$K$45+SOMME(AR7)*Tarif!$K$46);""))))

Je n'ai pourtant utilisé que 4 SI et 4 ET imbriqués sur 7 autorisés.

Y a t il une solution soit en formule sachant que la formule est recopiée et incrémentée sur une centaine de lignes soit en VBA ?

Je voulais joindre une copie de la partie de mon fichier incriminé, mais je n'ai pas trouvé comment faire. Je pense que ce sera utile.

Merci par avance pour les réponses

Dad
A voir également:

8 réponses

Chris 94 Messages postés 50978 Date d'inscription mardi 8 janvier 2008 Statut Modérateur Dernière intervention 17 février 2023 7 337
26 sept. 2016 à 16:31
Bonjour,

Pour mettre un doc en ligne, tu peux utiliser cette astuce.
0
DadKiller Messages postés 10 Date d'inscription lundi 13 décembre 2010 Statut Membre Dernière intervention 26 septembre 2016
26 sept. 2016 à 17:04
Bonsoir Chris 94
Merci pour la réponse rapide.
Voici le lien pour télécharger le fichier Excel.
https://www.cjoint.com/c/FIAo5UcbvBv
Dad
0
Chris 94 Messages postés 50978 Date d'inscription mardi 8 janvier 2008 Statut Modérateur Dernière intervention 17 février 2023 7 337 > DadKiller Messages postés 10 Date d'inscription lundi 13 décembre 2010 Statut Membre Dernière intervention 26 septembre 2016
26 sept. 2016 à 17:06
De rien, je laisse les vrais pros s'en servir, ils le feront bien mieux que moi :-)
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié par Patrice33740 le 26/09/2016 à 16:37
Bonjour,

SOMME(R7)*Tarif!$D$33
s'écrit aussi :
R7*Tarif!$D$33

ça fait déjà des parenthèse inutiles en moins.

Edit : Tu peux peut-être utiliser SOMMEPROD()
Cordialement
Patrice
0
DadKiller Messages postés 10 Date d'inscription lundi 13 décembre 2010 Statut Membre Dernière intervention 26 septembre 2016
26 sept. 2016 à 17:08
Bonsoir Patrice 33740

Merci pour la réponse.
Je ne connais pas SOMMEPROD(), mais je ne demande qu'a connaitre je vais donc chercher.
Dad
0
Raymond PENTIER Messages postés 58726 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 novembre 2024 17 240
Modifié par Raymond PENTIER le 26/09/2016 à 17:11
Bonjour.

Déjà, pourquoi compliquer inutilement ta formule en écrivant
SOMME(R7)*Tarif!$D$33 au lieu de mettre, comme tout le monde,
R7*Tarif!$D$33 ?

Pour joindre ton fichier
 1) Tu vas dans https://www.cjoint.com/ 
2) Tu cliques sur [Parcourir] pour sélectionner ton fichier (15 Mo maxi)
3) Tu défiles vers le bas pour cliquer sur le bouton bleu [Créer le lien Cjoint]
4) Au bout de quelques secondes la deuxième page s'affiche, avec le lien en gras ; tu fais un clic-droit dessus et tu choisis "Copier le lien"
5) Tu reviens dans ta discussion sur CCM, et dans ton message de réponse
tu fais "Coller".
=>Voir la fiche https://www.commentcamarche.net/faq/29493-utiliser-cjoint-pour-heberger-des-fichiers

C'est bien, la retraite ! Surtout aux Antilles ... :-) 
Raymond (INSA, AFPA, CF/R)
0
DadKiller Messages postés 10 Date d'inscription lundi 13 décembre 2010 Statut Membre Dernière intervention 26 septembre 2016
26 sept. 2016 à 17:12
Bonsoir Raymond,

Merci pour la réponse.

Je vais essayé toutes vos réponses.
En attendant voici le lien pour télécharger le fichier.

https://www.cjoint.com/c/FIAo5UcbvBv

Dad
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
Modifié par Mike-31 le 26/09/2016 à 16:54
Bonsoir,

joint ton fichier voir, mais d'après ce que j'ai compris je te conseille de faire des cascades et de compléter chaque élément avec la condition fausse en fin de conditionnelle ;0) et relancer une nouvelle conditionnelle avec un + que j'ai mis en gras
=SI(ET(A7="x";D7="AAAAA");(R7*Tarif!$D$33)+(T7*Tarif!$D$34)+(V7*Tarif!$D$35)+(X7*Tarif!$D$36)+(Z7*Tarif!$D$37)+(AB7*Tarif!$D$38)+(AD7*Tarif!$D$39)+(AF7*Tarif!$D$40)+(AH7*Tarif!$D$41)+(AJ7*Tarif!$D$42)+(AL7*Tarif!$D$43)+(AN7*Tarif!$D$44)+(AP7*Tarif!$D$45)+(AR7*Tarif!$D$46);0)+SI(ET(A7="x";D7="BBBBB");(R7*Tarif!$D$33)+(T7*Tarif!$D$34)+(V7*Tarif!$D$35)+(X7*Tarif!$D$36)+(Z7*Tarif!$D$37)+(AB7*Tarif!$D$38)+(AD7*Tarif!$D$39)+(AF7*Tarif!$D$40)+(AH7*Tarif!$D$41)+(AJ7*Tarif!$D$42)+(AL7*Tarif!$D$43)+(AN7*Tarif!$D$44)+(AP7*Tarif!$D$45)+(AR7*Tarif!$D$46);0)+SI(ET(A7="x";D7="CCCCC");(R7*Tarif!$D$33)+(T7*Tarif!$D$34)+(V7*Tarif!$D$35)+(X7*Tarif!$D$36)+(Z7*Tarif!$D$37)+(AB7*Tarif!$D$38)+(AD7*Tarif!$D$39)+(AF7*Tarif!$D$40)+(AH7*Tarif!$D$41)+(AJ7*Tarif!$D$42)+(AL7*Tarif!$D$43)+(AN7*Tarif!$D$44)+(AP7*Tarif!$D$45)+(AR7*Tarif!$D$46);0)+SI(ET(A7="x";D7="DDDDD");(R7*Tarif!$D$33)+(T7*Tarif!$D$34)+(V7*Tarif!$D$35)+(X7*Tarif!$D$36)+(Z7*Tarif!$D$37)+(AB7*Tarif!$D$38)+(AD7*Tarif!$D$39)+(AF7*Tarif!$D$40)+(AH7*Tarif!$D$41)+(AJ7*Tarif!$D$42)+(AL7*Tarif!$D$43)+(AN7*Tarif!$D$44)+(AP7*Tarif!$D$45)+(AR7*Tarif!$D$46);0) 

replace dans la formule les bonnes cellules pour chaque conditionnelle BBBBB, CCCCC et DDDDD

A+
Mike-31

Pas savoir n'est pas un échec, l'échec est le refus d'apprendre.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ccm81 Messages postés 10903 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 19 novembre 2024 2 426
Modifié par ccm81 le 26/09/2016 à 18:02
Bonjour

Avec excel 2003 tu as droit à 1024 caractères pour une formule (tu en as 1384). En élagant comme proposé plus haut on arrive à 1002 et tu peux encore en enlever quelques unes (avant et après les ";" -> attention pas ceux qui finissent les ET(...))

=SI(ET(A7="x";D7="AAAAA");(R7*Tarif!$D$33+(T7)*Tarif!$D$34+V7*Tarif!$D$35+(X7)*Tarif!$D$36+Z7*Tarif!$D$37+(AB7)*Tarif!$D$38+AD7*Tarif!$D$39+(AF7)*Tarif!$D$40+AH7*Tarif!$D$41+AJ7*Tarif!$D$42+AL7*Tarif!$D$43+AN7*Tarif!$D$44+AP7*Tarif!$D$45+AR7*Tarif!$D$46);SI(ET(A7="x";D7="BBBBB");(R7*Tarif!$I$33+T7*Tarif!$I$34+V7*Tarif!$I$35+(X7)*Tarif!$I$36+Z7*Tarif!$I$37+AB7*Tarif!$I$38+AD7*Tarif!$I$39+AF7*Tarif!$I$40+AH7*Tarif!$I$41+AJ7*Tarif!$I$42+AL7*Tarif!$I$43+AN7*Tarif!$I$44+AP7*Tarif!$I$45+AR7*Tarif!$I$46);SI(ET(A7="x";D7="CCCCC");(R7*Tarif!$J$33+(T7)*Tarif!$J$34+V7*Tarif!$J$35+X7*Tarif!$J$36+Z7*Tarif!$J$37+AB7*Tarif!$J$38+AD7*Tarif!$J$39+AF7*Tarif!$J$40+AH7*Tarif!$J$41+AJ7*Tarif!$J$42+AL7*Tarif!$J$43+AN7*Tarif!$J$44+AP7*Tarif!$J$45+AR7*Tarif!$J$46);SI(ET(A7="x";D7="DDDDD");(R7*Tarif!$K$33+T7*Tarif!$K$34+V7*Tarif!$K$35+X7*Tarif!$K$36+Z7*Tarif!$K$37+AB7*Tarif!$K$38+AD7*Tarif!$K$39+AF7*Tarif!$K$40+AH7*Tarif!$K$41+AJ7*Tarif!$K$42+AL7*Tarif!$K$43+AN7*Tarif!$K$44+AP7*Tarif!$K$45+AR7*Tarif!$K$46);""))))

RQ. Il y a peut ête des erreurs, mais tu peux arriver à moins de 1024 sans changer fondamentalement ta formule

Ce que ça donne dans ton fichier
http://www.cjoint.com/c/FIApv4lSA2q

Cdlmnt
0
DadKiller Messages postés 10 Date d'inscription lundi 13 décembre 2010 Statut Membre Dernière intervention 26 septembre 2016
26 sept. 2016 à 17:25
Bonsoir ccm81,

Merci pour toutes vos réponses.
Je vais toutes les essayer et je garderais celle qui me conviendra le mieux.
Je reviendrais pour vous tenir au courant.

Dad
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
26 sept. 2016 à 17:20
Re,

regarde ici l'astuce sur les imbrications quelque soit la version d'Excel
https://forums.commentcamarche.net/forum/affich-37641581-utiliser-plus-de-7-imbrications-si-dans-une-formule

et ta formule
=SI(ET(A7="x";D7="AAAAA");(R7*Tarif!$D$33)+(T7*Tarif!$D$34)+(V7*Tarif!$D$35)+(X7*Tarif!$D$36)+(Z7*Tarif!$D$37)+(AB7*Tarif!$D$38)+(AD7*Tarif!$D$39)+(AF7*Tarif!$D$40)+(AH7*Tarif!$D$41)+(AJ7*Tarif!$D$42)+(AL7*Tarif!$D$43)+(AN7*Tarif!$D$44)+(AP7*Tarif!$D$45)+(AR7*Tarif!$D$46);0)+SI(ET(A7="x";D7="BBBBB");(R7*Tarif!$I$33)+(T7*Tarif!$I$34)+(V7*Tarif!$I$35)+(X7*Tarif!$I$36)+(Z7*Tarif!$I$37)+(AB7*Tarif!$I$38)+(AD7*Tarif!$I$39)+(AF7*Tarif!$I$40)+(AH7*Tarif!$I$41)+(AJ7*Tarif!$I$42)+(AL7*Tarif!$I$43)+(AN7*Tarif!$I$44)+(AP7*Tarif!$I$45)+(AR7*Tarif!$I$46);0)+SI(ET(A7="x";D7="CCCCC");(R7*Tarif!$J$33)+(T7*Tarif!$J$34)+(V7*Tarif!$J$35)+(X7*Tarif!$J$36)+(Z7*Tarif!$J$37)+(AB7*Tarif!$J$38)+(AD7*Tarif!$J$39)+(AF7*Tarif!$J$40)+(AH7*Tarif!$J$41)+(AJ7*Tarif!$J$42)+(AL7*Tarif!$J$43)+(AN7*Tarif!$J$44)+(AP7*Tarif!$J$45)+(AR7*Tarif!$J$46);0)+SI(ET(A7="x";D7="DDDDD");(R7*Tarif!$K$33)+(T7*Tarif!$K$34)+(V7*Tarif!$K$35)+(X7*Tarif!$K$36)+(Z7*Tarif!$K$37)+(AB7*Tarif!$K$38)+(AD7*Tarif!$K$39)+(AF7*Tarif!$K$40)+(AH7*Tarif!$K$41)+(AJ7*Tarif!$K$42)+(AL7*Tarif!$K$43)+(AN7*Tarif!$K$44)+(AP7*Tarif!$K$45)+(AR7*Tarif!$K$46);0) 

0
Raymond PENTIER Messages postés 58726 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 19 novembre 2024 17 240
26 sept. 2016 à 17:34
Ta formule est effectivement bien trop longue, avec ses 1382 caractères !
=SI(ET(A7="x";D7="AAAAA");
(
SOMME(R7)*Tarif!$D$33+ ... +SOMME(AR7)*Tarif!$D$46
)
;SI(

contient une paire de parenthèses superflue ; comme cela se reproduit 4 fois, tu gagnes 8 caractères ...

En suivant la recommandation que Patrice et moi t'avons faite, tu économises 7 caractères 56 fois.

Au total tu raccourcis ta formule de 400 caractères !

Et si, en plus, tu changes le nom de la feuille en remplaçant "Tarif" par "Tf", tu gagnes encore 3 caractères à 56 reprises, et ta formule ne compte plus que 814 caractères ...
0
DadKiller Messages postés 10 Date d'inscription lundi 13 décembre 2010 Statut Membre Dernière intervention 26 septembre 2016
26 sept. 2016 à 18:32
Bonsoir tout le monde,

Alors après essai j'ai opté pour la solution Raymond et Patrice.
Mais je regarderais les autres solution plus en détail.

Je remercie donc tous les bénévoles qui ont consacré du temps à mon problème. Il y a encore des endroit ou entraide veux dire quelque chose.

Merci encore et comme dit Patrice, C'est bien, la retraite ! même en Charente maritime...;-)
Dad.
0