Récupérer la "dernière" cellule d'un format donné

Bonjour à tous,

Après quelques heures de navigation et (déjà !) d'apprentissage sur le site et le forum, je hasarde ma toute première question dans ces contrées érudites.

Désolé pour la formulation du titre de topic, mais je n'ai pas trouvé mieux.

Soit une ligne (A1:J1)

jour 1 / jour 2 / jour 3 / fermé / jour 4 / jour 5 / jour 6 / fermé / jour 7 / fermé

> Deux types différents de valeurs : "jour "&#n et "fermé".

Je cherche la combinaison de fonctions qui pointerait la valeur la plus élevée du premier type (ici "jour 7").

Or la formule =RECHERCHE("jour 99";A1:J1) renvoie la dernière cellule occupée ("fermé") quel que soit le type de valeur,

et je n'y vois pas plus clair en bricolant les MAX, NON, EQUIV/INDEX qui me dépassent un peu.

Le but de la manoeuvre : que la formule des cellules de cette ligne rende "fermé" si une cellule tierce de la colonne donne 0, et "jour "+ l'incrément si celle-là donne >0.

Je me suis d'abord contenté d'une conditionnelle SI en renvoyant à la cellule n-2 lorsque la n-1 était du type "fermé", mais je ne parviens pas à boucler la récurrence s'il y a plusieurs "fermé" de suite.

Voici les deux états insatisfaisants de ma formule complète par ailleurs :

=SI(K5=0;"fermé";"jour "&SOMME(1;STXT(RECHERCHE("jour 99";$H2:J2);6;3))) <--! le RECHERCHE compte "fermé" comme supérieur à "jour X"... -->

=SI(K5=0;"fermé";"jour "&SOMME(1;SI(K5>0;STXT(K2;6;3);STXT(J2;6;3)))) <--! récurrence valable pour un seul n-1 -->

Merci de vos lumières (et une bonne année à tous !)

alex

Bonjour

Formule matricielle à valider avec les 3 touches Ctrl+Maj+Entrée

=INDEX(A1:J1;EQUIV(MAX(SI(ESTNUM(DROITE(A1:J1;2)*1);DROITE(A1:J1;2)*1));DROITE(A1:J1;2)*1;0))

Cordialement

5classeur2.xls (14.50 Ko)

bonjour

apres avoir testé sur le fichier d'Amadeus

 =INDEX(A1:J1;SOMMEPROD(MAX((A1:J1<>"fermé")*(A1:J1>0)*COLONNE(A1:J1))))

cordialement

Deux grands "merci". Vos deux propositions sont très élégantes.

Je ne connaissais pas du tout ESTNUM que j'étudierai demain.

Merci !

alex

edit :

Un petit retour d'expérience.

La proposition ESTNUM est très efficace pour des valeurs "[a-z] [0-99]". Le champ de ma variable court de 1 à 150.

J'ai donc changé l'attribut des fonctions DROITE de 2 en 3, mais je n'attrape plus les valeurs [0-9]...

Voici comment j'ai intégré ce pointeur à ma formule de compteur :

"jour 1" ="jour "&(NB.SI(H9;">0"))

"jour 2" =SI(I9=0;"fermé";"jour "&SOMME(1;MAX(SI(ESTNUM(DROITE($H6:H6;3)*1);DROITE($H6:H6;3)*1))))

"jour 3" =SI(J9=0;"fermé";"soir "&SOMME(1;MAX(SI(ESTNUM(DROITE($H6:I6;3)*1);DROITE($H6:I6;3)*1))))

La proposition SOMMEPROD "cible" elle aussi parfaitement le MAX recherché, mais il m'est plus difficile d'y insérer la modification souhaitée (un incrément +1 à la valeur numérique qui termine la séquence) : je n'ai pas trouvé de moyen "propre" de le faire (sauf à finalement extraire la valeur numérique ainsi mesurée (?), pour la recoller comme précédemment après une SOMME +1).

Point de vue pratique, la solution "ESTNUM" avec changement d'attribut des DROITE seulement après la 9e cellule est parfaite.

Pour la théorie et l'amour de l'art, verriez-vous une manière de cibler [a-z]+ [0-999] ?

Encore merci du coup de main !

alex

Rechercher des sujets similaires à "recuperer derniere format donne"