Excel: optimisation d'une formule complexe

boatitude

XLDnaute Nouveau
Bonjour le forum,

Je cherche à réduire une énorme formule qui fait des kilomètres en une formule plus simple, sans utiliser VBA.

Pour expliquer la formule en question, je mets ci-dessus un lien vers un fichier avec les explications:
http://cjoint.com/?BEowUoXgV9m

Merci beaucoup pour votre aide.
Cordialement.
 

R@chid

XLDnaute Barbatruc
Re : Excel: optimisation d'une formule complexe

Bonsoir @ tous,
Salut CISCO :eek:
@ boatitude :
Comme il a dit CISCO trentaines de lignes seront suffisantes,
Tu peux nous dire que veux tu faire par la formule en colonne J, car si on arrive a comprendre on peut voir si on peut faire plus simple :p:confused:
Amicalement
 

boatitude

XLDnaute Nouveau
Re : Excel: optimisation d'une formule complexe

Bonjour CISCO et Rachid,

Merci pour vos réponses. Si je devais réduire le fichier à seulement quelques lignes, il serait encore plus dur de comprendre ce que j'essaie de faire. Dans l'exemple donné dans le fichier, la première ligne de la colonne J (J32) est égal à 212 car en ajoutant le coefficient de 1 sur chaque jour supplémentaire (retour progressif au maximum de 220), le minimum obtenu provient de I185 (=59), puisque 59+(185-32)*1=212 < 220 (=au résultat de I32). Il faut donc aller au moins jusqu'à la ligne 185 pour comprendre la valeur dans J32.

Il s'agit donc de trouver la valeur qui minimise le résultat de la colonne I (pour la ligne correspondante), en sachant que l'on utilise les valeurs du passés, en y ajoutant un coefficient (=1) pour chaque nouveau jour supplémentaire.

En vous remerciant pour vos réponses,
Cordialement
 

CISCO

XLDnaute Barbatruc
Re : Excel: optimisation d'une formule complexe

Bonsoir

Ce n'est pas exactement ce que tu désires, mais, en attendant, en essayant de comprendre ce que tu veux...

Met en L32 la formule matricielle :
Code:
MIN(I33:I253+(SI(LIGNE(INDIRECT("1:221"))<EQUIV(9^9;I:I;1)-LIGNE();LIGNE(INDIRECT("1:221"));EQUIV(9^9;I:I;1)-LIGNE())*$H$7))
et tires là vers le bas après l'avoir validée avec ctrl+maj+entrer (Comment fait-on sur MAC ?). Cela te donnera les mêmes résultats que la colonne J.

@ plus

P.S : cela fonctionnait bien avec
Code:
MIN(I33:I253+(LIGNE(INDIRECT("1:221"))*$H$7))
, malheureusement pas jusqu'en bas de la colonne L, pas en dessous de la ligne 1200, car cette dernière formule ne tient pas compte du fait que certaines cellules de la colonne I sont vides.
 

Pièces jointes

  • BEowUoXgV9m_optimisation bis.xlsx
    452.3 KB · Affichages: 76
Dernière édition:

boatitude

XLDnaute Nouveau
Re : Excel: optimisation d'une formule complexe

Bonsoir Cisco,

Merci mille fois!

C'est exactement ça! J'ai par contre opté pour la version la plus light (qui se trouvait en P.S.), car l'autre faisait mouliner mon Mac et quitter Excel. Comme tu le sais peut-être, Mac et Office c'est pas l'amour.

Et pour remédier au petit problème lié à ce qui se passe après la ligne 1200, j'ai simplement ajouté des 220 sur les 220 cellules suivant la dernière ligne de I pour éviter qu'elles soient vides. Le résultat est splendide.

Et dire que ma formule faisait au moins trois kilomètres. Merci merci!!

Cordialement.
 

boatitude

XLDnaute Nouveau
Re : Excel: optimisation d'une formule complexe

Cisco,

Dernière petite question: était-il possible de mettre un "indirect" dans un "indirect"?

En gros, j'ai essayé de paramétrer ta formule: MIN(I33:I253+(LIGNE(INDIRECT("1:221"))*$H$7)) comme suit:
MIN(I33:INDIRECT("I"&LIGNE(I33)+$E$8)+(LIGNE(INDIRECT("1:221"))*$H$7)) où E8 = 220 (ce qui fonctionne très bien), mais j'aimerais ajouter dans la partie INDIRECT("1:221"), un truc qui style "INDIRECT("1:INDIRECT("$E$8+1")"), mais ça ne fonctionne pas.

L'idée est qu'il suffirait ensuite de modifier le paramètre dans E8 (=220 actuellement) pour voir les modifs directement dans cette nouvelle formule.

Encore merci pour ton aide.

Cordialement.
 

CISCO

XLDnaute Barbatruc
Re : Excel: optimisation d'une formule complexe

Bonsoir

Et avec, en J32
Code:
MIN(I33:INDIRECT("I"&33+$E$8)+(LIGNE(INDIRECT("1:"&$E$8+1))*$H$7))
, toujours en matriciel, est-ce que c'est bon ?

@ plus

P.S : Et non, je viens de tester, cela ne fonctionne pas tel que, vers le bas. Je verrai cela demain.
 
Dernière édition:

boatitude

XLDnaute Nouveau
Re : Excel: optimisation d'une formule complexe

Oui, encore une fois, ça marche à merveille. T'es extraordinaire!

Voici donc la formule finale (pour éviter de le faire en deux étapes):

=SI(MIN(I33:INDIRECT("I"&LIGNE(I33)+$E$8)+(LIGNE(INDIRECT("1:"&$E$8+1))*$H$7))<220;MIN(I33:INDIRECT("I"&LIGNE(I33)+$E$8)+(LIGNE(INDIRECT("1:"&$E$8+1))*$H$7));220)

Merci beaucoup

Cordialement
 

CISCO

XLDnaute Barbatruc
Re : Excel: optimisation d'une formule complexe

Bonjour

Tu dois pouvoir faire avec
Code:
=MIN(MIN(I33:INDIRECT("I"&LIGNE(I33)+$E$8)+(LIGNE(INDIRECT("1:"&$E$8+1))*$H$7));220)
ou encore plus simple
Code:
MIN(I33:INDIRECT("I"&LIGNE(I33)+$E$8)+(LIGNE(INDIRECT("1:"&$E$8+1))*$H$7);220)
toujours en matriciel

@plus
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 396
Messages
2 088 038
Membres
103 705
dernier inscrit
mytek