Excel: optimisation d'une formule complexe

  • Initiateur de la discussion Initiateur de la discussion boatitude
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
Re : Excel: optimisation d'une formule complexe

Bonsoir @ tous,
Salut CISCO 😱
@ 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 😛😕
Amicalement
 
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
 
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

Dernière édition:
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.
 
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.
 
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:
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
 
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:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
55
Affichages
1 K
Réponses
2
Affichages
475
Réponses
7
Affichages
411
Réponses
3
Affichages
492
Retour