Simplifier une formule de comparaison

Bonjour à tous,

Je souhaiterais vous solliciter pour un besoin de simplification d'une formule. Je cherche à comparer des nombres en colonne associés à un texte qui se trouve dans la cellule précédente. J'ai joint un fichier pour être plus claire. Le but étant de trouver le nombre le plus élevé et de renvoyer un commentaire final dans une colonne donnée. J'ai construit une formule avec des SI.CONDITIONS imbriqués de MAX. Le problème c'est que j'aimerais simplifier la formule pour afin de pouvoir rajouter des nouvelles colonnes "texte" et "nombre" à comparer sans faire des formules trop grandes et créer une usine à gaz. Et le tout sans macro si possible svp. uniquement sur Excel.

Si vous avez besoin de plus d'explications, n'hésitez pas.

Merci d'avance.

Rineka

Bonjour,

Essaie en C2, à recopier vers le bas :

=INDEX(D2:V2;EQUIV(MAX(D2:V2);D2:V2;0)-1)

Daniel

Bonjour à tous,

daniel, il y a un defaut en ligne 4.

A mon avis, il y a des erreurs dans son tableau qui n'est pas complet. Il manque une tapée de formule !

Crdlmt

Merci DanielC pour ta réponse. Mais c'est vrai ce que dis Djidji59430. Je ne trouve pas la bonne réponse sur la troisième ligne.

Rineka

Il y a une erreur dans mon tableau. Le commentaire final de la cellule C4 devrait renvoyer HHH.

Sorry

Essaie :

=INDEX(A2:V2;MAX(SI(SI(NON(ESTNUM(D2:V2))*(D2:V2<>"")=1;COLONNE(D2:V2);"")<EQUIV(MAX(D2:V2);D2:V2;0)+3;COLONNE(D2:V2))))

Daniel

Merci Daniel. Mais j'ai peur que ça ne marche. :/

J'ai joint un fichier beaucoup plus claire. Ma formule d'origine marche bien. Les résultats sont exactes. Mais pour rajouter des critères supplémentaire, je galère un peu parce que ma formule est trop lourde. J'aimerais svp rajouter des critères en plus (de nouvelles colonnes) sans faire une formule sur 15 lignes.

Finalement je suis ouverte aux macros si nécessaire.

Merci d'avance

Rineka

Bonjour à tous,

Une proposition à insérer en B3 et tirer vers le bas :

=INDEX($C3:$U3; SI(ESTNUM(INDEX($C3:$U3;-1+EQUIV(MAX($C3:$U3);$C3:$U3;0)));-2;-1) +EQUIV(MAX($C3:$U3);$C3:$U3;0))

Ma compréhension c'est d'aller chercher dans la colonnes "à gauche" le titre qui correspond à un nombre maximal sur la ligne, puis de le renvoyer.

Donc on utilise MAX($C3:$U3) pour trouver le nombre max d'une ligne

Puis EQUIV(MAX($C3:$U3);$C3:$U3;0) pour trouver le n° de cellule correspondant à ce max

Et ensuite, d'après l'exemple, il y a 2 cas :

  • soit (ex. les colonnes "Gel"), ce numéro se situe "2 colonnes à droite de son titre", auquel cas il faut se décaler de 2
  • soit (ex. les colonnes "Dépassement"), ce numéro se situe "1 colonne à droite de son titre", auquel cas il faut se décaler de 1

Pour distinguer les 2 cas on fait un check sur la colonne -1 (donc à gauche du numéro max trouvé) : si c'est un nombre, il faut encore se décaler (-2), sinon c'est bon (c'est du texte). D'où le SI

Enfin avec INDEX on va chercher dans la ligne le numéro de colonne correspondant trouvé.

Nota : la formule renvoit NA pour les lignes vides.

Bonjour,

Ma formule, adaptée à ta nouvelle disposition donne les mêmes résultats que la tienne à l'exception des lignes marquées "à traiter manuellement". Peux-tu m'indiquer dans quel cas tu mets ce résultat ? Dans le classeur ci-dessous, j'ai mis ma formule en colonne V :

il manque un si a ta formule =SI(ET(L3="";U3="");INDEX(A3:U3;MAX(SI(SI(NON(ESTNUM(C3:U3))*(C3:U3<>"")=1;COLONNE(C3:U3);"")<EQUIV(MAX(C3:U3);C3:U3;0)+3;COLONNE(C3:U3))));"à traiter")

Rechercher des sujets similaires à "simplifier formule comparaison"