Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Trouver le plus grand nombre d'une séquence au sein d'une cellule

5 réponses
Avatar
seb74
Bonjour à tous,

Besoin d'un coup de main !
Voici le dilemme : j'ai des chaines dans des cellules et je voudrai dans leur cellule adjacente afficher le plus grand nombre de cette chaine...

Les chaines sont du type de celle-ci :
S2_Ech010a_2|S2_Ech012_1|S2_Ech011b_2|S2_Ech011_2|

Seuls les 3 chiffres qui suivent 'Ech' m'intéressent.
J'ai l'impression qu'au final il faut utiliser les fonctions 'grande.valeur' ou 'max', peut être avec du matriciel, mais il faut avant tout nettoyer la chaine de façon automatique...

Et pour tout ça... je ne sais pas faire...

Help

5 réponses

Avatar
Jacky
Bonsoir,

Si la structure est toujours la même, il y a ceci

=MAX(STXT(A1;7;3);STXT(A1;20;3);STXT(A1;32;3);STXT(A1;45;3))

--
Salutations
JJ


"seb74" a écrit dans le message de news:

Bonjour à tous,

Besoin d'un coup de main !
Voici le dilemme : j'ai des chaines dans des cellules et je voudrai dans leur
cellule adjacente afficher le plus grand nombre de cette chaine...

Les chaines sont du type de celle-ci :
S2_Ech010a_2|S2_Ech012_1|S2_Ech011b_2|S2_Ech011_2|

Seuls les 3 chiffres qui suivent 'Ech' m'intéressent.
J'ai l'impression qu'au final il faut utiliser les fonctions 'grande.valeur' ou
'max', peut être avec du matriciel, mais il faut avant tout nettoyer la chaine
de façon automatique...

Et pour tout ça... je ne sais pas faire...

Help
Avatar
MichD
Bonjour,

Peu importe la structure :

'Validation matricielle : Maj + ctrl + enter
=MAX(SI(ESTNUM(STXT($A$1;LIGNE(INDIRECT("1:"&NBCAR($A$1)));3)*1);STXT($A$1;LIGNE(INDIRECT("1:"&NBCAR($A$1)));3)*1))

N.B. si le résultat est 012 comme le zéro n'est pas significatif, il n'apparaît pas. Cependant tu peux donner à ta cellule
le format personnalisé 000 pour toujours afficher 3 chiffres !



MichD
------------------------------------------
"seb74" a écrit dans le message de groupe de discussion :

Bonjour à tous,

Besoin d'un coup de main !
Voici le dilemme : j'ai des chaines dans des cellules et je voudrai dans leur
cellule adjacente afficher le plus grand nombre de cette chaine...

Les chaines sont du type de celle-ci :
S2_Ech010a_2|S2_Ech012_1|S2_Ech011b_2|S2_Ech011_2|

Seuls les 3 chiffres qui suivent 'Ech' m'intéressent.
J'ai l'impression qu'au final il faut utiliser les fonctions 'grande.valeur' ou
'max', peut être avec du matriciel, mais il faut avant tout nettoyer la chaine
de façon automatique...

Et pour tout ça... je ne sais pas faire...

Help
Avatar
seb74
seb74 a écrit le 20/12/2011 à 17h59 :
Bonjour à tous,

Besoin d'un coup de main !
Voici le dilemme : j'ai des chaines dans des cellules et je voudrai dans leur
cellule adjacente afficher le plus grand nombre de cette chaine...

Les chaines sont du type de celle-ci :
S2_Ech010a_2|S2_Ech012_1|S2_Ech011b_2|S2_Ech011_2|

Seuls les 3 chiffres qui suivent 'Ech' m'intéressent.
J'ai l'impression qu'au final il faut utiliser les fonctions 'grande.valeur' ou
'max', peut être avec du matriciel, mais il faut avant tout nettoyer la
chaine de façon automatique...

Et pour tout ça... je ne sais pas faire...

Help


Merci à tous les deux pour ces propositions.
J'ai essayé de vous répondre et vous remercier plus tôt mais mon message n'est pas parti.
La structure étant variable, la seconde proposition est juste parfaite ! ça marche à merveille !

MichD, peux-tu stp m'éclaircir sur ce fonctionnement matricielle ?
Je connais les fonctions prises séparément mais je n'arrive pas à comprendre ton imbrication.

Encore merci !
Avatar
MichD
|MichD, peux-tu stp m'éclaircir sur ce fonctionnement matricielle ?

| 'Validation matricielle : Maj + ctrl + enter
| =MAX(SI(ESTNUM(STXT($A$1;LIGNE(INDIRECT("1:"&NBCAR($A$1)));3)*1);STXT($A$1;LIGNE(INDIRECT("1:"&NBCAR($A$1)));3)*1))


La chaîne de caractères : S2_Ech010a_2|S2_Ech012_1|S2_Ech011b_2|S2_Ech011_2|

***En fait, la formule prend à tour de rôle 3 caractères à la fois à partir du premier caractère contenu dans la cellule A1
et elle crée un tableau temporaire comme suit :
S2_
2_E
_Ec
Ech
... ainsi de suite pour chaque regroupement.

Cela c'est le travail de l'argument No 2 de la fonction Stxt() représenté par : LIGNE(INDIRECT("1:"&NBCAR($A$1))) qui
signifie qu'autant de chaînes de 3 caractères seront créées qu'il y a de caractères dans la chaîne source.

La fonction EstNum() sert à faire un tri dans les chaînes de 3 caractères pour ne retenir que celles qui sont numériques.

La fonction Max() retient la valeur numérique la plus élevée parmi les chaînes numériques de 3 caractères que contient la
plage, peu importe leur position dans la chaîne.

Si tu as plus d'une chaîne de caractères de 3 caractères numériques dans la donnée source, si tu veux retenir une chaîne
particulière selon sa position (après "Ech" par exemple), il faudrait modifier la formule...


MichD
------------------------------------------
"seb74" a écrit dans le message de groupe de discussion :

seb74 a écrit le 20/12/2011 à 17h59 :
Bonjour à tous,

Besoin d'un coup de main !
Voici le dilemme : j'ai des chaines dans des cellules et je voudrai dans


leur
cellule adjacente afficher le plus grand nombre de cette chaine...

Les chaines sont du type de celle-ci :
S2_Ech010a_2|S2_Ech012_1|S2_Ech011b_2|S2_Ech011_2|

Seuls les 3 chiffres qui suivent 'Ech' m'intéressent.
J'ai l'impression qu'au final il faut utiliser les fonctions 'grande.valeur'


ou
'max', peut être avec du matriciel, mais il faut avant tout nettoyer la
chaine de façon automatique...

Et pour tout ça... je ne sais pas faire...

Help


Merci à tous les deux pour ces propositions.
J'ai essayé de vous répondre et vous remercier plus tôt mais mon message n'est
pas parti.
La structure étant variable, la seconde proposition est juste parfaite ! ça
marche à merveille !

MichD, peux-tu stp m'éclaircir sur ce fonctionnement matricielle ?
Je connais les fonctions prises séparément mais je n'arrive pas à comprendre
ton imbrication.

Encore merci !
Avatar
seb74
seb74 a écrit le 20/12/2011 à 17h59 :
Bonjour à tous,

Besoin d'un coup de main !
Voici le dilemme : j'ai des chaines dans des cellules et je voudrai dans leur
cellule adjacente afficher le plus grand nombre de cette chaine...

Les chaines sont du type de celle-ci :
S2_Ech010a_2|S2_Ech012_1|S2_Ech011b_2|S2_Ech011_2|

Seuls les 3 chiffres qui suivent 'Ech' m'intéressent.
J'ai l'impression qu'au final il faut utiliser les fonctions 'grande.valeur' ou
'max', peut être avec du matriciel, mais il faut avant tout nettoyer la
chaine de façon automatique...

Et pour tout ça... je ne sais pas faire...

Help


OK ! Je vais creuser LIGNE et INDIRECT pour saisir le cœur.
Encore merci pour cette solution ultra rapide !