OVH Cloud OVH Cloud

Formule trop longue

8 réponses
Avatar
Perceval973
Bonjour a tous...

Bon, ce qui devait arriver est arrivé :-P

Excel vient de me dire que ma formule est trop longue...
Comment m'en sortir ?

Je sais que ma question est un peu idiote, mais je n'ai pas du tout d'idée,
je me dit qu'on peut surement la remplacer par autre chose (une macro ?),
mais n'étant pas programmeur je ne sais meme pas par ou commencer...

Merci pour vos suggestions
Perceval

8 réponses

Avatar
ru-th
Bonjour
Excel vient de me dire que ma formule est trop longue...
Comment m'en sortir ?


en la raccourcissant, peut-être ... comme disait le bon docteur guillottin

mais ne serait-il pas intéressant et profitable que tu l'exposasses à la
ci-devant assemblée ?
a+
rural thierry
"Perceval973" a écrit dans le message de news:
41a74832$0$28283$
Bonjour a tous...

Bon, ce qui devait arriver est arrivé :-P

Excel vient de me dire que ma formule est trop longue...
Comment m'en sortir ?

Je sais que ma question est un peu idiote, mais je n'ai pas du tout
d'idée,

je me dit qu'on peut surement la remplacer par autre chose (une macro ?),
mais n'étant pas programmeur je ne sais meme pas par ou commencer...

Merci pour vos suggestions
Perceval




Avatar
Perceval973
Si surement, mais j'avais peur qu'on se moque...

=SI(ESTVIDE(H4);SI(HEURE(G4)<=6;SI(ET((E4)<P000;(F4)<000);SI(OU(JOURSEM
(G4;2)=5;JOURSEM(G4;2)=6);G4+3;G4+1);SI(ET((E4)<00000;(F4)<`000);SI(OU(J
OURSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;
2)=4);G4+5;G4+3)));SI(HEURE(G4)<;SI(ET((E4)< 0000;(F4)<@000);SI(OU(JO
URSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2
)=4;JOURSEM(G4;2)=5);G4+5;G4+3));SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2)=4;JOURS
EM(G4;2)=5);G4+5;G4+3)));"SI(HEURE(H4)<=6;SI(ET((E4)<P000;(F4)<000);SI(
OU(JOURSEM(H4;2)=5;JOURSEM(H4;2)=6);H4+3;H4+1);SI(ET((E4)<00000;(F4)<`00
0);SI(OU(JOURSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+4;H4+2);SI(OU(JOURSEM(H4;2)=3;J
OURSEM(H4;2)=4);H4+5;H4+3)));SI(HEURE(H4)<;SI(ET((E4)< 0000;(F4)<@000
);SI(OU(JOURSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+4;H4+2);SI(OU(JOURSEM(H4;2)=3;JO
URSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+5;H4+3));SI(OU(JOURSEM(H4;2)=3;JOURSEM(H4;
2)=4;JOURSEM(H4;2)=5);H4+5;H4+3))))

La première partie fonctionne, je l'ai testée, mais la seconde je n'ai pas
pu la tester vu qu'elle est trop longue.
Je l'ai testée comme ca :
=SI(ESTVIDE(H4);SI(HEURE(G4)<=6;SI(ET((E4)<P000;(F4)<000);SI(OU(JOURSEM
(G4;2)=5;JOURSEM(G4;2)=6);G4+3;G4+1);SI(ET((E4)<00000;(F4)<`000);SI(OU(J
OURSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;
2)=4);G4+5;G4+3)));SI(HEURE(G4)<;SI(ET((E4)< 0000;(F4)<@000);SI(OU(JO
URSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2
)=4;JOURSEM(G4;2)=5);G4+5;G4+3));SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2)=4;JOURS
EM(G4;2)=5);G4+5;G4+3)));"nouvelle prévision")

Alors a quoi me sert-elle ?
Je fais des plannings prévisionnels, avec des test assez complexes (pas
compliqués)
J'ai une date avec une heure dans la cellule G4 et H4 est vide,
si l'heure est inférieure a 6h00
et que le volume est inférieur a 50000 dans E4 ET inférieur a 10000 dans
F4 alors la date dans I4 est égale a J+1 (ouvré)
si le volume est inférieur a 300000 dans E4 ET inférieur a 60000 dans F4
alors la date dans I4 est égale a J+2 (ouvré)
sinon J+3 (ouvré)
si l'heure est comprise entre 6h00 et 12h00 et que le volume est inférieur a
200000 dans E4 ET inférieur a 40000 dans F4 alors la date dans I4 est égale
a J+2 (ouvré)
sinon J+3 (ouvré)
Si j'ai une date dans H4 (au meme format que G4) on recommence le meme test,
mais avec H4

Merci d'avance pour votre aide (enfin si vous comprenez mon besoin)
Perceval


"ru-th" a écrit dans le message de
news:
Bonjour
Excel vient de me dire que ma formule est trop longue...
Comment m'en sortir ?


en la raccourcissant, peut-être ... comme disait le bon docteur guillottin

mais ne serait-il pas intéressant et profitable que tu l'exposasses à la
ci-devant assemblée ?
a+
rural thierry
"Perceval973" a écrit dans le message de news:
41a74832$0$28283$
Bonjour a tous...

Bon, ce qui devait arriver est arrivé :-P

Excel vient de me dire que ma formule est trop longue...
Comment m'en sortir ?

Je sais que ma question est un peu idiote, mais je n'ai pas du tout
d'idée,

je me dit qu'on peut surement la remplacer par autre chose (une macro
?),


mais n'étant pas programmeur je ne sais meme pas par ou commencer...

Merci pour vos suggestions
Perceval








Avatar
ru-th
re-

un peu hard pour vendredi soir !

une piste pour le principe (pas le temps de voir plus loin)

=SERIE.JOUR.OUVRE(G4;3-((H4="")*(HEURE(G4)<6)*(((E4<P000)*(F4<000))+((E
4<00000)*(F4<`000)))))
est-ce qu'il y a toujours une heures en h4 ou G4 si oui
on pourrait faire un test du type
(heure(max(g4:h4)<6) et reduire un peu la formule

pour l'instant, je laisse la main...
peut-être plus tard, après deux-trois rhum !
a+
rural thierry

"Perceval973" a écrit dans le message de news:
41a74eaf$0$28276$
Si surement, mais j'avais peur qu'on se moque...


=SI(ESTVIDE(H4);SI(HEURE(G4)<=6;SI(ET((E4)<P000;(F4)<000);SI(OU(JOURSEM


(G4;2)=5;JOURSEM(G4;2)=6);G4+3;G4+1);SI(ET((E4)<00000;(F4)<`000);SI(OU(J


OURSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;


2)=4);G4+5;G4+3)));SI(HEURE(G4)<;SI(ET((E4)< 0000;(F4)<@000);SI(OU(JO


URSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2

)=4;JOURSEM(G4;2)=5);G4+5;G4+3));SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2)=4;JOU
RS


EM(G4;2)=5);G4+5;G4+3)));"SI(HEURE(H4)<=6;SI(ET((E4)<P000;(F4)<000);SI(


OU(JOURSEM(H4;2)=5;JOURSEM(H4;2)=6);H4+3;H4+1);SI(ET((E4)<00000;(F4)<`00


0);SI(OU(JOURSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+4;H4+2);SI(OU(JOURSEM(H4;2)=3;J


OURSEM(H4;2)=4);H4+5;H4+3)));SI(HEURE(H4)<;SI(ET((E4)< 0000;(F4)<@000

);SI(OU(JOURSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+4;H4+2);SI(OU(JOURSEM(H4;2)=3;
JO


URSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+5;H4+3));SI(OU(JOURSEM(H4;2)=3;JOURSEM(H4;

2)=4;JOURSEM(H4;2)=5);H4+5;H4+3))))

La première partie fonctionne, je l'ai testée, mais la seconde je n'ai pas
pu la tester vu qu'elle est trop longue.
Je l'ai testée comme ca :

=SI(ESTVIDE(H4);SI(HEURE(G4)<=6;SI(ET((E4)<P000;(F4)<000);SI(OU(JOURSEM


(G4;2)=5;JOURSEM(G4;2)=6);G4+3;G4+1);SI(ET((E4)<00000;(F4)<`000);SI(OU(J


OURSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;


2)=4);G4+5;G4+3)));SI(HEURE(G4)<;SI(ET((E4)< 0000;(F4)<@000);SI(OU(JO


URSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2

)=4;JOURSEM(G4;2)=5);G4+5;G4+3));SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2)=4;JOU
RS

EM(G4;2)=5);G4+5;G4+3)));"nouvelle prévision")

Alors a quoi me sert-elle ?
Je fais des plannings prévisionnels, avec des test assez complexes (pas
compliqués)
J'ai une date avec une heure dans la cellule G4 et H4 est vide,
si l'heure est inférieure a 6h00
et que le volume est inférieur a 50000 dans E4 ET inférieur a 10000
dans

F4 alors la date dans I4 est égale a J+1 (ouvré)
si le volume est inférieur a 300000 dans E4 ET inférieur a 60000 dans
F4

alors la date dans I4 est égale a J+2 (ouvré)
sinon J+3 (ouvré)
si l'heure est comprise entre 6h00 et 12h00 et que le volume est inférieur
a

200000 dans E4 ET inférieur a 40000 dans F4 alors la date dans I4 est
égale

a J+2 (ouvré)
sinon J+3 (ouvré)
Si j'ai une date dans H4 (au meme format que G4) on recommence le meme
test,

mais avec H4

Merci d'avance pour votre aide (enfin si vous comprenez mon besoin)
Perceval


"ru-th" a écrit dans le message de
news:
Bonjour
Excel vient de me dire que ma formule est trop longue...
Comment m'en sortir ?


en la raccourcissant, peut-être ... comme disait le bon docteur
guillottin



mais ne serait-il pas intéressant et profitable que tu l'exposasses à la
ci-devant assemblée ?
a+
rural thierry
"Perceval973" a écrit dans le message de news:
41a74832$0$28283$
Bonjour a tous...

Bon, ce qui devait arriver est arrivé :-P

Excel vient de me dire que ma formule est trop longue...
Comment m'en sortir ?

Je sais que ma question est un peu idiote, mais je n'ai pas du tout
d'idée,

je me dit qu'on peut surement la remplacer par autre chose (une macro
?),


mais n'étant pas programmeur je ne sais meme pas par ou commencer...

Merci pour vos suggestions
Perceval












Avatar
YannX
Bigre, effectivement, il y a des longueurs..... Je comprends ta peur,
et te plains sincèrement quand, dans quelques mois, tu devras modifier ton
tableau.....

D'abord, je me permettrait une suggestion : utilise des "Noms" pour tes
cellules
(remplacer les adresses [H4] par des termes significatifs Insertion / Nom /
Définir....)
Tu me diras, avec raison, que cela ne raccourcit par la formule : c'est vrai
!

Ensuite, utilise des fonctions utilisateur : a première vue, ta magnifique
formule
n'utilise que trois ou quatre cellules : H4 G4 E4 F4
définis-toi dans le VBE <Alt+F11> une fonction du genre....
Function Ma_Formule( h_G4 as Double ; l_E4 as Double ; l_F4...) as Double
dim res as double
dim b as Boolean
' et traduisons...
' SI(HEURE(G4)<=6;SI(ET((E4)<P000;(F4)<000);
IF (HEURE(h_G4)<=6) then
IF (l_E4 <P000 AND l_F4<= 10000)
.......
' que tu pourras aussi écrire :
b = ( l_E4 <P000 AND l_F4 <= 10000)

'SI(OU(JOURSEM(G4;2)=5;JOURSEM(G4;2)=6);G4+3;G4+1)
res = iif(JourSem(h_G4;2)=5 OR JourSem(h_G4;2) = 6 ) ; h_G4+3 ; h_G4+1 )

' mais peut-etre écriras-tu une autre fonction qui s'appellerait
Function VEndreDiSamedi( dJ as long) as boolean

VendrediSamedi = JourSem(dJ ; 2) = 5 OR JourSem(dJ ; 2 = 6)
....dis-donc : es-tu sur de ne pas te tromper :
' c'etait pas plutot une fonction WeekEnd(dj As long) que tu voulais
ecrire !



End Function
Bon je ne continues pas ici , j'espere que tu as perçu le principe
mais recherche un tutorial, par exemple
http://www.cathyastuce.com/excel/form_fonction.php

On te dira "Oui, c'est de la programmation ! c'est trop compliqué....."
Au vu de ta formule, tu sauras faire.

Et je peux te dire que j'ai passé cette technique a un copain qui avait
écrit 300 Ko de formules,
Et bien maintenant il a un classeur 800 Ko, avec quelques chose comme 500
formules différentes,
réparties dans 15 feuilles (toutes différentes bien sur !),
et il s'en sort !

@+
Y


"Perceval973" a écrit dans le message de
news:41a74eaf$0$28276$
Si surement, mais j'avais peur qu'on se moque...


=SI(ESTVIDE(H4);SI(HEURE(G4)<=6;SI(ET((E4)<P000;(F4)<000);SI(OU(JOURSEM


(G4;2)=5;JOURSEM(G4;2)=6);G4+3;G4+1);SI(ET((E4)<00000;(F4)<`000);SI(OU(J


OURSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;


2)=4);G4+5;G4+3)));SI(HEURE(G4)<;SI(ET((E4)< 0000;(F4)<@000);SI(OU(JO


URSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2

)=4;JOURSEM(G4;2)=5);G4+5;G4+3));SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2)=4;JOU
RS


EM(G4;2)=5);G4+5;G4+3)));"SI(HEURE(H4)<=6;SI(ET((E4)<P000;(F4)<000);SI(


OU(JOURSEM(H4;2)=5;JOURSEM(H4;2)=6);H4+3;H4+1);SI(ET((E4)<00000;(F4)<`00


0);SI(OU(JOURSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+4;H4+2);SI(OU(JOURSEM(H4;2)=3;J


OURSEM(H4;2)=4);H4+5;H4+3)));SI(HEURE(H4)<;SI(ET((E4)< 0000;(F4)<@000

);SI(OU(JOURSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+4;H4+2);SI(OU(JOURSEM(H4;2)=3;
JO


URSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+5;H4+3));SI(OU(JOURSEM(H4;2)=3;JOURSEM(H4;

2)=4;JOURSEM(H4;2)=5);H4+5;H4+3))))

La première partie fonctionne, je l'ai testée, mais la seconde je n'ai pas
pu la tester vu qu'elle est trop longue.
Je l'ai testée comme ca :

=SI(ESTVIDE(H4);SI(HEURE(G4)<=6;SI(ET((E4)<P000;(F4)<000);SI(OU(JOURSEM


(G4;2)=5;JOURSEM(G4;2)=6);G4+3;G4+1);SI(ET((E4)<00000;(F4)<`000);SI(OU(J


OURSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;


2)=4);G4+5;G4+3)));SI(HEURE(G4)<;SI(ET((E4)< 0000;(F4)<@000);SI(OU(JO


URSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2

)=4;JOURSEM(G4;2)=5);G4+5;G4+3));SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2)=4;JOU
RS

EM(G4;2)=5);G4+5;G4+3)));"nouvelle prévision")

Alors a quoi me sert-elle ?
Je fais des plannings prévisionnels, avec des test assez complexes (pas
compliqués)
J'ai une date avec une heure dans la cellule G4 et H4 est vide,
si l'heure est inférieure a 6h00
et que le volume est inférieur a 50000 dans E4 ET inférieur a 10000
dans

F4 alors la date dans I4 est égale a J+1 (ouvré)
si le volume est inférieur a 300000 dans E4 ET inférieur a 60000 dans
F4

alors la date dans I4 est égale a J+2 (ouvré)
sinon J+3 (ouvré)
si l'heure est comprise entre 6h00 et 12h00 et que le volume est inférieur
a

200000 dans E4 ET inférieur a 40000 dans F4 alors la date dans I4 est
égale

a J+2 (ouvré)
sinon J+3 (ouvré)
Si j'ai une date dans H4 (au meme format que G4) on recommence le meme
test,

mais avec H4

Merci d'avance pour votre aide (enfin si vous comprenez mon besoin)
Perceval


"ru-th" a écrit dans le message de
news:
Bonjour
Excel vient de me dire que ma formule est trop longue...
Comment m'en sortir ?


en la raccourcissant, peut-être ... comme disait le bon docteur
guillottin



mais ne serait-il pas intéressant et profitable que tu l'exposasses à la
ci-devant assemblée ?
a+
rural thierry
"Perceval973" a écrit dans le message de news:
41a74832$0$28283$
Bonjour a tous...

Bon, ce qui devait arriver est arrivé :-P

Excel vient de me dire que ma formule est trop longue...
Comment m'en sortir ?

Je sais que ma question est un peu idiote, mais je n'ai pas du tout
d'idée,

je me dit qu'on peut surement la remplacer par autre chose (une macro
?),


mais n'étant pas programmeur je ne sais meme pas par ou commencer...

Merci pour vos suggestions
Perceval












Avatar
YannX
Excuse-moi d'avoir renvoyé le message un peu vite !
Outre des fautes de syntaxe, j'ai mis un mauvais lien.

Regarde plutot http://ericrenaud.free.fr/ ou
http://www.fundp.ac.be/~jmlamber/vba/Notes1-Introduction.html
http://excel-vba-francais.com/vba-macros-microsoft-excel.htm
Etc.....

Cela peut paraitre un peu dur au debut,
mais cela ne durera pas !

Bonne suite


"YannX" a écrit dans le message de
news:
Bigre, effectivement, il y a des longueurs..... Je comprends ta peur,
et te plains sincèrement quand, dans quelques mois, tu devras modifier ton
tableau.....

D'abord, je me permettrait une suggestion :
utilise des "Noms" pour tes cellules

Ensuite, utilise des fonctions utilisateur :
a première vue, ta magnifique formule
définis-toi dans le VBE <Alt+F11> une fonction du genre....

VendrediSamedi = JourSem(dJ ; 2) = 5 OR JourSem(dJ ; 2 = 6)
....dis-donc : es-tu sur de ne pas te tromper :
' c'etait pas plutot une fonction Function WeekEnd(dj As long) que tu
voulais

ecrire !



End Function
Bon je ne continues pas ici , j'espere que tu as perçu le principe
mais recherche un tutorial, par exemple
http://www.cathyastuce.com/excel/form_fonction.php

On te dira "Oui, c'est de la programmation ! c'est trop compliqué....."
Au vu de ta formule, tu sauras faire.

Et je peux te dire que j'ai passé cette technique a un copain qui avait
écrit 300 Ko de formules,
Et bien maintenant il a un classeur 800 Ko, avec quelques chose comme 500
formules différentes,
réparties dans 15 feuilles (toutes différentes bien sur !),
et il s'en sort !

@+
Y


"Perceval973" a écrit dans le message de
news:41a74eaf$0$28276$
Si surement, mais j'avais peur qu'on se moque...




=SI(ESTVIDE(H4);SI(HEURE(G4)<=6;SI(ET((E4)<P000;(F4)<000);SI(OU(JOURSEM




(G4;2)=5;JOURSEM(G4;2)=6);G4+3;G4+1);SI(ET((E4)<00000;(F4)<`000);SI(OU(J




OURSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;




2)=4);G4+5;G4+3)));SI(HEURE(G4)<;SI(ET((E4)< 0000;(F4)<@000);SI(OU(JO




URSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2


)=4;JOURSEM(G4;2)=5);G4+5;G4+3));SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2)=4;JOU
RS



EM(G4;2)=5);G4+5;G4+3)));"SI(HEURE(H4)<=6;SI(ET((E4)<P000;(F4)<000);SI(




OU(JOURSEM(H4;2)=5;JOURSEM(H4;2)=6);H4+3;H4+1);SI(ET((E4)<00000;(F4)<`00




0);SI(OU(JOURSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+4;H4+2);SI(OU(JOURSEM(H4;2)=3;J




OURSEM(H4;2)=4);H4+5;H4+3)));SI(HEURE(H4)<;SI(ET((E4)< 0000;(F4)<@000


);SI(OU(JOURSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+4;H4+2);SI(OU(JOURSEM(H4;2)=3;
JO



URSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+5;H4+3));SI(OU(JOURSEM(H4;2)=3;JOURSEM(H4;

2)=4;JOURSEM(H4;2)=5);H4+5;H4+3))))

La première partie fonctionne, je l'ai testée, mais la seconde je n'ai
pas


pu la tester vu qu'elle est trop longue.
Je l'ai testée comme ca :



=SI(ESTVIDE(H4);SI(HEURE(G4)<=6;SI(ET((E4)<P000;(F4)<000);SI(OU(JOURSEM




(G4;2)=5;JOURSEM(G4;2)=6);G4+3;G4+1);SI(ET((E4)<00000;(F4)<`000);SI(OU(J




OURSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;




2)=4);G4+5;G4+3)));SI(HEURE(G4)<;SI(ET((E4)< 0000;(F4)<@000);SI(OU(JO




URSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2


)=4;JOURSEM(G4;2)=5);G4+5;G4+3));SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2)=4;JOU
RS
EM(G4;2)=5);G4+5;G4+3)));"nouvelle prévision")

Alors a quoi me sert-elle ?
Je fais des plannings prévisionnels, avec des test assez complexes (pas
compliqués)
J'ai une date avec une heure dans la cellule G4 et H4 est vide,
si l'heure est inférieure a 6h00
et que le volume est inférieur a 50000 dans E4 ET inférieur a 10000
dans

F4 alors la date dans I4 est égale a J+1 (ouvré)
si le volume est inférieur a 300000 dans E4 ET inférieur a 60000
dans


F4
alors la date dans I4 est égale a J+2 (ouvré)
sinon J+3 (ouvré)
si l'heure est comprise entre 6h00 et 12h00 et que le volume est
inférieur


a
200000 dans E4 ET inférieur a 40000 dans F4 alors la date dans I4 est
égale

a J+2 (ouvré)
sinon J+3 (ouvré)
Si j'ai une date dans H4 (au meme format que G4) on recommence le meme
test,

mais avec H4

Merci d'avance pour votre aide (enfin si vous comprenez mon besoin)
Perceval


"ru-th" a écrit dans le message de
news:
Bonjour
Excel vient de me dire que ma formule est trop longue...
Comment m'en sortir ?


en la raccourcissant, peut-être ... comme disait le bon docteur
guillottin



mais ne serait-il pas intéressant et profitable que tu l'exposasses à
la



ci-devant assemblée ?
a+
rural thierry
"Perceval973" a écrit dans le message de news:
41a74832$0$28283$
Bonjour a tous...

Bon, ce qui devait arriver est arrivé :-P

Excel vient de me dire que ma formule est trop longue...
Comment m'en sortir ?

Je sais que ma question est un peu idiote, mais je n'ai pas du tout
d'idée,

je me dit qu'on peut surement la remplacer par autre chose (une
macro




?),
mais n'étant pas programmeur je ne sais meme pas par ou commencer...

Merci pour vos suggestions
Perceval
















Avatar
Perceval973
Merci je vais me pencher sur tout ca ce week end, en espérant ne pas tomber
trop bas ;-)

"YannX" a écrit dans le message de news:
%
Excuse-moi d'avoir renvoyé le message un peu vite !
Outre des fautes de syntaxe, j'ai mis un mauvais lien.

Regarde plutot http://ericrenaud.free.fr/ ou
http://www.fundp.ac.be/~jmlamber/vba/Notes1-Introduction.html
http://excel-vba-francais.com/vba-macros-microsoft-excel.htm
Etc.....

Cela peut paraitre un peu dur au debut,
mais cela ne durera pas !

Bonne suite


"YannX" a écrit dans le message de
news:
Bigre, effectivement, il y a des longueurs..... Je comprends ta peur,
et te plains sincèrement quand, dans quelques mois, tu devras modifier
ton
tableau.....

D'abord, je me permettrait une suggestion :
utilise des "Noms" pour tes cellules

Ensuite, utilise des fonctions utilisateur :
a première vue, ta magnifique formule
définis-toi dans le VBE <Alt+F11> une fonction du genre....

VendrediSamedi = JourSem(dJ ; 2) = 5 OR JourSem(dJ ; 2 = 6)
....dis-donc : es-tu sur de ne pas te tromper :
' c'etait pas plutot une fonction Function WeekEnd(dj As long) que tu
voulais

ecrire !



End Function
Bon je ne continues pas ici , j'espere que tu as perçu le principe
mais recherche un tutorial, par exemple
http://www.cathyastuce.com/excel/form_fonction.php

On te dira "Oui, c'est de la programmation ! c'est trop compliqué....."
Au vu de ta formule, tu sauras faire.

Et je peux te dire que j'ai passé cette technique a un copain qui avait
écrit 300 Ko de formules,
Et bien maintenant il a un classeur 800 Ko, avec quelques chose comme 500
formules différentes,
réparties dans 15 feuilles (toutes différentes bien sur !),
et il s'en sort !

@+
Y


"Perceval973" a écrit dans le message de
news:41a74eaf$0$28276$
Si surement, mais j'avais peur qu'on se moque...




=SI(ESTVIDE(H4);SI(HEURE(G4)<=6;SI(ET((E4)<P000;(F4)<000);SI(OU(JOURSEM




(G4;2)=5;JOURSEM(G4;2)=6);G4+3;G4+1);SI(ET((E4)<00000;(F4)<`000);SI(OU(J




OURSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;




2)=4);G4+5;G4+3)));SI(HEURE(G4)<;SI(ET((E4)< 0000;(F4)<@000);SI(OU(JO




URSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2


)=4;JOURSEM(G4;2)=5);G4+5;G4+3));SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2)=4;JOU
RS



EM(G4;2)=5);G4+5;G4+3)));"SI(HEURE(H4)<=6;SI(ET((E4)<P000;(F4)<000);SI(




OU(JOURSEM(H4;2)=5;JOURSEM(H4;2)=6);H4+3;H4+1);SI(ET((E4)<00000;(F4)<`00




0);SI(OU(JOURSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+4;H4+2);SI(OU(JOURSEM(H4;2)=3;J




OURSEM(H4;2)=4);H4+5;H4+3)));SI(HEURE(H4)<;SI(ET((E4)< 0000;(F4)<@000


);SI(OU(JOURSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+4;H4+2);SI(OU(JOURSEM(H4;2)=3;
JO



URSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+5;H4+3));SI(OU(JOURSEM(H4;2)=3;JOURSEM(H4;

2)=4;JOURSEM(H4;2)=5);H4+5;H4+3))))

La première partie fonctionne, je l'ai testée, mais la seconde je n'ai
pas


pu la tester vu qu'elle est trop longue.
Je l'ai testée comme ca :



=SI(ESTVIDE(H4);SI(HEURE(G4)<=6;SI(ET((E4)<P000;(F4)<000);SI(OU(JOURSEM




(G4;2)=5;JOURSEM(G4;2)=6);G4+3;G4+1);SI(ET((E4)<00000;(F4)<`000);SI(OU(J




OURSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;




2)=4);G4+5;G4+3)));SI(HEURE(G4)<;SI(ET((E4)< 0000;(F4)<@000);SI(OU(JO




URSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2


)=4;JOURSEM(G4;2)=5);G4+5;G4+3));SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2)=4;JOU
RS
EM(G4;2)=5);G4+5;G4+3)));"nouvelle prévision")

Alors a quoi me sert-elle ?
Je fais des plannings prévisionnels, avec des test assez complexes (pas
compliqués)
J'ai une date avec une heure dans la cellule G4 et H4 est vide,
si l'heure est inférieure a 6h00
et que le volume est inférieur a 50000 dans E4 ET inférieur a 10000
dans

F4 alors la date dans I4 est égale a J+1 (ouvré)
si le volume est inférieur a 300000 dans E4 ET inférieur a 60000
dans


F4
alors la date dans I4 est égale a J+2 (ouvré)
sinon J+3 (ouvré)
si l'heure est comprise entre 6h00 et 12h00 et que le volume est
inférieur


a
200000 dans E4 ET inférieur a 40000 dans F4 alors la date dans I4 est
égale

a J+2 (ouvré)
sinon J+3 (ouvré)
Si j'ai une date dans H4 (au meme format que G4) on recommence le meme
test,

mais avec H4

Merci d'avance pour votre aide (enfin si vous comprenez mon besoin)
Perceval


"ru-th" a écrit dans le message de
news:
Bonjour
Excel vient de me dire que ma formule est trop longue...
Comment m'en sortir ?


en la raccourcissant, peut-être ... comme disait le bon docteur
guillottin



mais ne serait-il pas intéressant et profitable que tu l'exposasses à
la



ci-devant assemblée ?
a+
rural thierry
"Perceval973" a écrit dans le message de news:
41a74832$0$28283$
Bonjour a tous...

Bon, ce qui devait arriver est arrivé :-P

Excel vient de me dire que ma formule est trop longue...
Comment m'en sortir ?

Je sais que ma question est un peu idiote, mais je n'ai pas du tout
d'idée,

je me dit qu'on peut surement la remplacer par autre chose (une
macro




?),
mais n'étant pas programmeur je ne sais meme pas par ou
commencer...

Merci pour vos suggestions
Perceval




















Avatar
Daniel.M
Bonjour,

Ton problème est un bon exemple où le recours à des cellules supplémentaires
rend la solution beaucoup plus facile à comprendre et à adapter éventuellement.
Par exemple, si tu utilises une autre cellule (mettons N4) dans laquelle tu
mets:
=SI(G4="";H4;G4)

Ensuite, dans ta formule principale, tu remplaces G4 par N4.
Et le tour est joué. Pas besoin de refaire l'ensemble des tests pour H4 car la
cellule N4 contiendra la 'bonne date'. Il en irait de même si tu voulais tester
une troisième cellule: il n'y aurait qu'à changer la petite formule en N4, les
autres formules ne changeraient pas.

Ceci étant dit, tu pourrais également raccourcir ta formule principale en
calculant une seule fois le nombre de jours à ajouter (mettons en O4)
=SI(HEURE(N4)<6;SI(ET(E4<P000;F4<000);1;SI(ET(E4<00000;
F4<`000);2;3));SI(ET(HEURE(N4)<12;E4<200000;F4<40000);2;3))

Ta formule principale devient donc
=SERIE.JOUR.OUVRE(N4;O4)

Donc, 3 formules, dont 2 petites :
une courte pour 'sélectionner' la date
une pour calculer le nombre de jours,
une autre courte, la principale, pour ajouter les jours à cette date.

Tu pourrais évidemment 'insérer' la deuxième formule dans la 3ième et te passer
de O4, mais c'est toujours une question de lisibilité.

Salutations,

Daniel M.

"Perceval973" wrote in message
news:41a74eaf$0$28276$
Si surement, mais j'avais peur qu'on se moque...

=SI(ESTVIDE(H4);SI(HEURE(G4)<=6;SI(ET((E4)<P000;(F4)<000);SI(OU(JOURSEM
(G4;2)=5;JOURSEM(G4;2)=6);G4+3;G4+1);SI(ET((E4)<00000;(F4)<`000);SI(OU(J
OURSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;
2)=4);G4+5;G4+3)));SI(HEURE(G4)<;SI(ET((E4)< 0000;(F4)<@000);SI(OU(JO
URSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2
)=4;JOURSEM(G4;2)=5);G4+5;G4+3));SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2)=4;JOURS
EM(G4;2)=5);G4+5;G4+3)));"SI(HEURE(H4)<=6;SI(ET((E4)<P000;(F4)<000);SI(
OU(JOURSEM(H4;2)=5;JOURSEM(H4;2)=6);H4+3;H4+1);SI(ET((E4)<00000;(F4)<`00
0);SI(OU(JOURSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+4;H4+2);SI(OU(JOURSEM(H4;2)=3;J
OURSEM(H4;2)=4);H4+5;H4+3)));SI(HEURE(H4)<;SI(ET((E4)< 0000;(F4)<@000
);SI(OU(JOURSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+4;H4+2);SI(OU(JOURSEM(H4;2)=3;JO
URSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+5;H4+3));SI(OU(JOURSEM(H4;2)=3;JOURSEM(H4;
2)=4;JOURSEM(H4;2)=5);H4+5;H4+3))))

La première partie fonctionne, je l'ai testée, mais la seconde je n'ai pas
pu la tester vu qu'elle est trop longue.
Je l'ai testée comme ca :
=SI(ESTVIDE(H4);SI(HEURE(G4)<=6;SI(ET((E4)<P000;(F4)<000);SI(OU(JOURSEM
(G4;2)=5;JOURSEM(G4;2)=6);G4+3;G4+1);SI(ET((E4)<00000;(F4)<`000);SI(OU(J
OURSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;
2)=4);G4+5;G4+3)));SI(HEURE(G4)<;SI(ET((E4)< 0000;(F4)<@000);SI(OU(JO
URSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2
)=4;JOURSEM(G4;2)=5);G4+5;G4+3));SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2)=4;JOURS
EM(G4;2)=5);G4+5;G4+3)));"nouvelle prévision")

Alors a quoi me sert-elle ?
Je fais des plannings prévisionnels, avec des test assez complexes (pas
compliqués)
J'ai une date avec une heure dans la cellule G4 et H4 est vide,
si l'heure est inférieure a 6h00
et que le volume est inférieur a 50000 dans E4 ET inférieur a 10000 dans
F4 alors la date dans I4 est égale a J+1 (ouvré)
si le volume est inférieur a 300000 dans E4 ET inférieur a 60000 dans F4
alors la date dans I4 est égale a J+2 (ouvré)
sinon J+3 (ouvré)
si l'heure est comprise entre 6h00 et 12h00 et que le volume est inférieur a
200000 dans E4 ET inférieur a 40000 dans F4 alors la date dans I4 est égale
a J+2 (ouvré)
sinon J+3 (ouvré)
Si j'ai une date dans H4 (au meme format que G4) on recommence le meme test,
mais avec H4

Merci d'avance pour votre aide (enfin si vous comprenez mon besoin)
Perceval


"ru-th" a écrit dans le message de
news:
Bonjour
Excel vient de me dire que ma formule est trop longue...
Comment m'en sortir ?


en la raccourcissant, peut-être ... comme disait le bon docteur guillottin

mais ne serait-il pas intéressant et profitable que tu l'exposasses à la
ci-devant assemblée ?
a+
rural thierry
"Perceval973" a écrit dans le message de news:
41a74832$0$28283$
Bonjour a tous...

Bon, ce qui devait arriver est arrivé :-P

Excel vient de me dire que ma formule est trop longue...
Comment m'en sortir ?

Je sais que ma question est un peu idiote, mais je n'ai pas du tout
d'idée,

je me dit qu'on peut surement la remplacer par autre chose (une macro
?),


mais n'étant pas programmeur je ne sais meme pas par ou commencer...

Merci pour vos suggestions
Perceval












Avatar
Perceval973
Ah oui, cool... Ca ca me parle plus, parceque sincèrement le VBA et tout ca,
ca me fait un peu peur...
Je pense que je vais commencer par suivre tes conseils pour que mon fichier
soit vite opérationnel, et je me lancerais dans le VBA plus tard...
Merci

"Daniel.M" a écrit dans le message de
news:
Bonjour,

Ton problème est un bon exemple où le recours à des cellules
supplémentaires
rend la solution beaucoup plus facile à comprendre et à adapter
éventuellement.
Par exemple, si tu utilises une autre cellule (mettons N4) dans laquelle
tu
mets:
=SI(G4="";H4;G4)

Ensuite, dans ta formule principale, tu remplaces G4 par N4.
Et le tour est joué. Pas besoin de refaire l'ensemble des tests pour H4
car la
cellule N4 contiendra la 'bonne date'. Il en irait de même si tu voulais
tester
une troisième cellule: il n'y aurait qu'à changer la petite formule en N4,
les
autres formules ne changeraient pas.

Ceci étant dit, tu pourrais également raccourcir ta formule principale en
calculant une seule fois le nombre de jours à ajouter (mettons en O4)
=SI(HEURE(N4)<6;SI(ET(E4<P000;F4<000);1;SI(ET(E4<00000;
F4<`000);2;3));SI(ET(HEURE(N4)<12;E4<200000;F4<40000);2;3))

Ta formule principale devient donc
=SERIE.JOUR.OUVRE(N4;O4)

Donc, 3 formules, dont 2 petites :
une courte pour 'sélectionner' la date
une pour calculer le nombre de jours,
une autre courte, la principale, pour ajouter les jours à cette date.

Tu pourrais évidemment 'insérer' la deuxième formule dans la 3ième et te
passer
de O4, mais c'est toujours une question de lisibilité.

Salutations,

Daniel M.

"Perceval973" wrote in message
news:41a74eaf$0$28276$
Si surement, mais j'avais peur qu'on se moque...

=SI(ESTVIDE(H4);SI(HEURE(G4)<=6;SI(ET((E4)<P000;(F4)<000);SI(OU(JOURSEM
(G4;2)=5;JOURSEM(G4;2)=6);G4+3;G4+1);SI(ET((E4)<00000;(F4)<`000);SI(OU(J
OURSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;
2)=4);G4+5;G4+3)));SI(HEURE(G4)<;SI(ET((E4)< 0000;(F4)<@000);SI(OU(JO
URSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2
)=4;JOURSEM(G4;2)=5);G4+5;G4+3));SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2)=4;JOURS
EM(G4;2)=5);G4+5;G4+3)));"SI(HEURE(H4)<=6;SI(ET((E4)<P000;(F4)<000);SI(
OU(JOURSEM(H4;2)=5;JOURSEM(H4;2)=6);H4+3;H4+1);SI(ET((E4)<00000;(F4)<`00
0);SI(OU(JOURSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+4;H4+2);SI(OU(JOURSEM(H4;2)=3;J
OURSEM(H4;2)=4);H4+5;H4+3)));SI(HEURE(H4)<;SI(ET((E4)< 0000;(F4)<@000
);SI(OU(JOURSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+4;H4+2);SI(OU(JOURSEM(H4;2)=3;JO
URSEM(H4;2)=4;JOURSEM(H4;2)=5);H4+5;H4+3));SI(OU(JOURSEM(H4;2)=3;JOURSEM(H4;
2)=4;JOURSEM(H4;2)=5);H4+5;H4+3))))

La première partie fonctionne, je l'ai testée, mais la seconde je n'ai
pas
pu la tester vu qu'elle est trop longue.
Je l'ai testée comme ca :
=SI(ESTVIDE(H4);SI(HEURE(G4)<=6;SI(ET((E4)<P000;(F4)<000);SI(OU(JOURSEM
(G4;2)=5;JOURSEM(G4;2)=6);G4+3;G4+1);SI(ET((E4)<00000;(F4)<`000);SI(OU(J
OURSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;
2)=4);G4+5;G4+3)));SI(HEURE(G4)<;SI(ET((E4)< 0000;(F4)<@000);SI(OU(JO
URSEM(G4;2)=4;JOURSEM(G4;2)=5);G4+4;G4+2);SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2
)=4;JOURSEM(G4;2)=5);G4+5;G4+3));SI(OU(JOURSEM(G4;2)=3;JOURSEM(G4;2)=4;JOURS
EM(G4;2)=5);G4+5;G4+3)));"nouvelle prévision")

Alors a quoi me sert-elle ?
Je fais des plannings prévisionnels, avec des test assez complexes (pas
compliqués)
J'ai une date avec une heure dans la cellule G4 et H4 est vide,
si l'heure est inférieure a 6h00
et que le volume est inférieur a 50000 dans E4 ET inférieur a 10000
dans
F4 alors la date dans I4 est égale a J+1 (ouvré)
si le volume est inférieur a 300000 dans E4 ET inférieur a 60000 dans
F4
alors la date dans I4 est égale a J+2 (ouvré)
sinon J+3 (ouvré)
si l'heure est comprise entre 6h00 et 12h00 et que le volume est
inférieur a
200000 dans E4 ET inférieur a 40000 dans F4 alors la date dans I4 est
égale
a J+2 (ouvré)
sinon J+3 (ouvré)
Si j'ai une date dans H4 (au meme format que G4) on recommence le meme
test,
mais avec H4

Merci d'avance pour votre aide (enfin si vous comprenez mon besoin)
Perceval


"ru-th" a écrit dans le message de
news:
Bonjour
Excel vient de me dire que ma formule est trop longue...
Comment m'en sortir ?


en la raccourcissant, peut-être ... comme disait le bon docteur
guillottin

mais ne serait-il pas intéressant et profitable que tu l'exposasses à
la
ci-devant assemblée ?
a+
rural thierry
"Perceval973" a écrit dans le message de news:
41a74832$0$28283$
Bonjour a tous...

Bon, ce qui devait arriver est arrivé :-P

Excel vient de me dire que ma formule est trop longue...
Comment m'en sortir ?

Je sais que ma question est un peu idiote, mais je n'ai pas du tout
d'idée,

je me dit qu'on peut surement la remplacer par autre chose (une macro
?),


mais n'étant pas programmeur je ne sais meme pas par ou commencer...

Merci pour vos suggestions
Perceval