Microsoft 365 Récupérer le nom de la colonne portant la dernière valeur supérieure à 0 sur une ligne

LucileCrn

XLDnaute Nouveau
Bonjour à tous,

Pour une ligne donnée, je dois restituer le titre de la première colonne porteuse d'une valeur supérieure à 0, et le titre de la dernière colonne porteuse d'une valeur supérieure à 0.

Pour la première colonne, j'ai réussi :
=INDEX($C$2:$X$2; EQUIV(VRAI;INDEX(C3:X3>0;0);0))
C2:X2 : Titre des colonnes
C3:X3 : Ligne avec mes valeurs (0 ou+)
==> J'obtiens bien en résultat le titre de la première colonne (2023-2627) qui a une valeur strictement supérieure à 0.


Par contre pour le même exercice avec le titre de la dernière colonne .. je sèche!
J'ai tenté beaucoup de choses différentes mais j'en suis là :
=INDEX(C2:X2;MAX(SI(C3:X3>0;COLONNE(C3:X3))))

Le résultat est pour l'instant 2023-3334 alors que cela devrait être 2023-3031

Merci par avance pour votre aide :)
 

Pièces jointes

  • Classeur1.xlsx
    9.9 KB · Affichages: 3

xUpsilon

XLDnaute Accro
Bonjour,

La formule est correcte pourtant, c'est simplement ta compréhension de ce que tu as mis dedans qui pose problème :
- l'utilisation de INDEX dans la première formule renvoie le numéro d'index de ta colonne, pas le numéro de la colonne. Ce que ça veut dire, c'est que tu considères la colonne C comme étant "la première colonne" par rapport à ton référentiel d'index. Donc le résultat est correct.
- par contre, dans ta deuxième formule, tu utilises directement MAX(COLUMN()), sans passer par un index. Ainsi, les numéros de colonnes commencent par 1 en colonne A, etc ... Sauf que vu que ta formule est dans la colonne B (la colonne numéro 2), tu es décalé de 2 colonnes dans le résultat renvoyé par ton MAX. INDEX ayant besoin d'un d'index relatif à la plage cherchée, tu renvoies donc un résultat deux colonnes trop loin -> d'où le fait que la formule renvoie 2023-3334, qui est l'entête de colonne "2 colonnes trop loin".

Concrètement, en passant par les colonnes, il faudrait déduire le numéro de colonne dans laquelle se trouve ta formule de manière à "indexer" ta recherche, c'est à dire =INDEX(C2:X2;MAX(IF(C3:X3>0;COLUMN(C3:X3)))-COLUMN())

Bonne journée,
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 231
Membres
103 161
dernier inscrit
Rogombe bryan