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

Le
seb74 Hors ligne
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Jacky
Le #24093161
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"
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
MichD
Le #24093221
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
seb74 Hors ligne
Le #24098291
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 !
MichD
Le #24098581
|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 !
seb74 Hors ligne
Le #24100301
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 !
Publicité
Poster une réponse
Anonyme