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")

Merci DanielC et Saboh12617 mais la formule la plus exacte est celle de Djidji59430 (merci aussi ;)). Cependant il y a un hic. J'ai plusieurs colonnes entre l'ID client et le commentaire final. Je n'ai pas spécialement besoin de l'ID pour faire mon commentaire. Mais dans la formule INDEX, lorsque je modifie le tableau à sélectionner, les résultats sont faux. Même quand je corrige l'INDEX, les données restent fausses. J'ai joint mon fichier pour être plus explicite. Pourrais-tu m'aider à faire la correction stp? Ou qui que ce soit d'ailleurs.

Merci d'avance.

Rineka.

Vous n'avez toujours pas expliqué la règle du "à traiter" que DanielC vous avait demandé. En reprenant celle proposé par djidji (un SI sur les colonnes M et V) j'obtiens bien ses résultats, et ma proposition fonctionne quelque soit la position de votre tableau.

=SI(ET($M20="";$V20="");INDEX($D20:$U20; SI(ESTNUM(INDEX($D20:$U20;-1+EQUIV(MAX($D20:$U20);$D20:$U20;0)));-2;-1) +EQUIV(MAX($D20:$U20);$D20:$U20;0));"à traiter")

Pour adapter la formule de Djidji/DanielC, il faut comprendre qu'elle fonctionne avec les numéros de colonne "généraux", donc quand vous ne partez plus de la colonne A vous "cassez tout" : il faut se réaligner.

Pour cela, dans votre dernier exemple vous partez de la colonne C (numéro 3 donc), il faut donc retirer 2 à la position trouvée par la formule pour s'aligner sur les bonnes colonnes.

Soit

{=SI(ET(M20="";V20="");INDEX(C20:V20;-2 + MAX(SI(SI(NON(ESTNUM(D20:V20))*(D20:V20<>"")=1;COLONNE(D20:V20);"")<EQUIV(MAX(D20:V20);D20:V20;0)+3;COLONNE(D20:V20))));"à traiter")}

NB : il y a un deuxième piège avec le "+3" qui n'est valable que pour le début de votre tableau en colonne D.

@Saboh12617 et DanielC : "A traiter" n'est valable que pour les données qui ne sont ni en "crédit" ni en "créances saines". Lorsque les 2 colonnes cités contiennent un commentaire, la formule du max ne fonctionne pas car ces colonnes ne revoient aucun nombre de jours. Il y en a pas beaucoup. Du coup je les traite en manuel, une à une.

@saboh Quand j'avais testé ta première formule elle me renvoyait des à pour les raisons que tu as donné. Maintenant ça marche. J'ai juste eu à remplacer le "-2" et le "+3" et ça marche bien.

Merci à tous pour votre aide!

Rechercher des sujets similaires à "simplifier formule comparaison"