OVH Cloud OVH Cloud

Max ou Min d'1 série de lettres

15 réponses
Avatar
bsh77
Bonsoir à toutes et à tous,

Comment faire pour avoir le maximum ou le minimum d'1 série de lettres ou
mots dans une collonne
ex : série = PA, PB, PC, PD, PE
Min (série) = "PA"
Max (série) = "PE"

Merci pour votre aide

BS

10 réponses

1 2
Avatar
garnote
Bonsoir,

Pas sûr de comprendre !
Est-ce que tu veux obtenir la première valeur
et la dernière de ta série ?

Serge

"bsh77" a écrit dans le message de news:
brt8kg$mrp$
Bonsoir à toutes et à tous,

Comment faire pour avoir le maximum ou le minimum d'1 série de lettres ou
mots dans une collonne
ex : série = PA, PB, PC, PD, PE
Min (série) = "PA"
Max (série) = "PE"

Merci pour votre aide

BS





Avatar
bsh77
En fait, c'est pour obtenir l'équivalence de la fonction Min ou Max dans
Excel pour les caractères.
Pour répondre à ta question, ma série n'est pas forcément classée dans
l'ordre.
A+
BS


"garnote" a écrit dans le message de news:
AIpEb.11091$
Bonsoir,

Pas sûr de comprendre !
Est-ce que tu veux obtenir la première valeur
et la dernière de ta série ?

Serge

"bsh77" a écrit dans le message de news:
brt8kg$mrp$
Bonsoir à toutes et à tous,

Comment faire pour avoir le maximum ou le minimum d'1 série de lettres
ou


mots dans une collonne
ex : série = PA, PB, PC, PD, PE
Min (série) = "PA"
Max (série) = "PE"

Merci pour votre aide

BS









Avatar
j
si les données sont dans A1:A10 et sont constituées de mots de 2 lettres :
=INDEX(A1:A10;EQUIV(MAX(1000*CODE(A1:A10)+CODE(DROITE(A1:A10;1)));1000*CODE(
A1:A10)+CODE(DROITE(A1:A10;1));0))
formule matricielle à valider par CTRL+MAJ+ENTREE
(y a surement plus simple...)
--

http://jacxl.free.fr/



"bsh77" a écrit dans le message de news:
brt8kg$mrp$
Bonsoir à toutes et à tous,

Comment faire pour avoir le maximum ou le minimum d'1 série de lettres ou
mots dans une collonne
ex : série = PA, PB, PC, PD, PE
Min (série) = "PA"
Max (série) = "PE"

Merci pour votre aide

BS





Avatar
AV
Pour les 5 premiers caractères.....
On peut allonger encore ;-)
Matricielle
=INDEX(A1:A10;EQUIV(MAX(CODE(STXT(MINUSCULE(A1:A10&REPT(0;5^5));1;1))+CODE(STXT(
MINUSCULE(A1:A10&REPT(0;5^5));2;1))+CODE(STXT(MINUSCULE(A1:A10&REPT(0;5^5));3;1)
)+CODE(STXT(MINUSCULE(A1:A10&REPT(0;5^5));4;1))+CODE(STXT(MINUSCULE(A1:A10&REPT(
0;5^5));5;1)));CODE(STXT(MINUSCULE(A1:A10&REPT(0;5^5));1;1))+CODE(STXT(MINUSCULE
(A1:A10&REPT(0;5^5));2;1))+CODE(STXT(MINUSCULE(A1:A10&REPT(0;5^5));3;1))+CODE(ST
XT(MINUSCULE(A1:A10&REPT(0;5^5));4;1))+CODE(STXT(MINUSCULE(A1:A10&REPT(0;5^5));5
;1));0))

PS : pour le MIN, remplacer REPT(0;5^5) par REPT("]";5^5)

Bofff
AV
Avatar
Daniel.M
Salut,

Si tu as le fichier MOREFUN.XLL de Laurent Longre disponible chez
http://longre.free.fr
(et si tu ne l'as pas, c'est une bonne occasion de te le procurer!)
tu utilises:

=INDEX(TRIV(Plage);1)
et
=INDEX(TRIV(Plage;;1);1)

Salutations,

Daniel M.

"bsh77" wrote in message
news:brt8kg$mrp$
Bonsoir à toutes et à tous,

Comment faire pour avoir le maximum ou le minimum d'1 série de lettres ou
mots dans une collonne
ex : série = PA, PB, PC, PD, PE
Min (série) = "PA"
Max (série) = "PE"

Merci pour votre aide

BS





Avatar
Daniel.M
Salut,

Sans MOREFUN.XLL, il y a la matricielle suivante (max 5 lettres, sinon faut
ajuster les constantes matricielles):

=INDEX(Plg;EQUIV(MAX(PRODUITMAT(CODE(STXT(Plg&" ";{1.2.3.4.5};1))
*32^{4.3.2.1.0};1+0*{1;2;3;4;5}));PRODUITMAT(CODE(STXT(Plg&" ";
{1.2.3.4.5};1))*32^{4.3.2.1.0};1+0*{1;2;3;4;5});0))

Les matrices horizontales peuvent varier selon les configurations du OS. Ainsi
les "." peuvent devoir y être remplacés par des "," ou des ""

Salutations,

Daniel M.

"Daniel.M" wrote in message
news:%
Salut,

Si tu as le fichier MOREFUN.XLL de Laurent Longre disponible chez
http://longre.free.fr
(et si tu ne l'as pas, c'est une bonne occasion de te le procurer!)
tu utilises:

=INDEX(TRIV(Plage);1)
et
=INDEX(TRIV(Plage;;1);1)

Salutations,

Daniel M.

"bsh77" wrote in message
news:brt8kg$mrp$
Bonsoir à toutes et à tous,

Comment faire pour avoir le maximum ou le minimum d'1 série de lettres ou
mots dans une collonne
ex : série = PA, PB, PC, PD, PE
Min (série) = "PA"
Max (série) = "PE"

Merci pour votre aide

BS









Avatar
AV
Salut Daniel,

Si je puis me permettre un petit correctif pour un fonctionnement indépendant de
la casse :
=INDEX(A1:A10;EQUIV(MAX(PRODUITMAT(CODE(STXT(MINUSCULE(A1:A10)&"
";{12345};1))*32^{4321};1+0*{1;2;3;4;5}));PRODUITMAT(CODE(STXT(MINUSCUL
E(A1:A10)&" ";{12345};1))*32^{4321};1+0*{1;2;3;4;5});0))

AV
Avatar
Daniel.M
AV,

Oui. Et on peut raccourcir encore un petit peu:

=INDEX(A1:A10;EQUIV(MAX(PRODUITMAT(CODE(STXT(MINUSCULE(A1:A10)&
" ";{12345};1))*32^{4321};{1;1;1;1;1}));PRODUITMAT(CODE(STXT(
MINUSCULE(A1:A10)&" ";{12345};1))*32^{4321};{1;1;1;1;1});0))

Voilà! Ne reste plus qu'à recevoir les remerciements enthousiastes de bsh77 pour
nos efforts. :-))

Daniel M.

"AV" wrote in message
news:%
Salut Daniel,

Si je puis me permettre un petit correctif pour un fonctionnement indépendant
de

la casse :
=INDEX(A1:A10;EQUIV(MAX(PRODUITMAT(CODE(STXT(MINUSCULE(A1:A10)&"

";{12345};1))*32^{4321};1+0*{1;2;3;4;5}));PRODUITMAT(CODE(STXT(MINUSCUL

E(A1:A10)&" ";{12345};1))*32^{4321};1+0*{1;2;3;4;5});0))

AV




Avatar
AV
Voilà! Ne reste plus qu'à recevoir les remerciements enthousiastes de bsh77
pour

nos efforts. :-))


M'est avis que c'est pas gagné ! ;-)

Comme le Père Noël est généreux et pour le fun :
Limité à 9 caractères (allez donc savoir pourquoi !! ;)) :

================================ Sub zzzzzzzzzzzz()
On Error Resume Next
plg = Selection.Address
maxCar = Evaluate("max(len(" & plg & ":" & plg & "))")
For i = 1 To maxCar
mat1 = mat1 & i & ","
mat3 = mat3 & "1" & ";"
Next
For i = maxCar - 1 To 1 Step -1
mat2 = mat2 & i & ","
Next
mat1 = "{" & Left(mat1, Len(mat1) - 1) & "}"
mat2 = "{" & Left(mat2, Len(mat2) - 1) & ",0}"
mat3 = "{" & Left(mat3, Len(mat3) - 1) & "}"
MsgBox Evaluate("index(" & plg & ",match(max(mmult(code(mid(lower(" & plg &
")&rept(0," & maxCar & ")," & mat1 & ",1))*10^" & mat2 & "," & mat3 &
")),mmult(code(mid(lower(" & plg & ")&rept(0," & maxCar & ")," & mat1 &
",1))*10^" & mat2 & "," & mat3 & "),0))")
End Sub

=================
Une fonction perso (pas de limitation)

Option Compare Text
Function MAX_ALPHA(Plage As Range)
For Each C In Plage
For i = 1 To Len(C)
x = x & Format(Asc(Mid(LCase(C), i, 1)), "000")
Next
If x > z Then
z = x: z = z
Lg = C.Row: Cl = C.Column
End If
x = ""
Next
On Error Resume Next
MAX_ALPHA = Cells(Lg, Cl).Value
End Function

Pour la MIN_ALPHA, je laisse "bsh77" faire un petit effort !
;-)

PS : Pour mon Père Noël
City Bank : 111 111 111

AV

Avatar
Daniel.M
Salut AV,

C'est le père Noël qui doit être content.
On continue ... même si on semble les seuls à avoir du fun. :-)

Pour zzzzzzzzzzzz():
1. maxCar = Evaluate("max(len(" & plg & ":" & plg & "))")

Pourquoi plg & ":" & plg ?

2.Dans la formule, avec 10^, le programme sortira PZ avant QA. Le coefficient
(10) n'est pas assez élevé.
Il faut au moins un _coefficient_ de 2^maxcar
Avec 5 lettres max, j'avais mis 32 (2^5).
Si tu as un max de 9 lettres, ça devrait être 2^9
Ce coefficient 512 est lui même resoumis à l'exponentiation.

Donc, ça me donne:


Sub azz()
On Error Resume Next
plg = Selection.Address
maxcar = Evaluate("max(len(" & plg & "))")
For i = 1 To maxcar
mat1 = mat1 & i & ","
mat2 = mat2 & maxcar - i & ","
Next
mat3 = Application.Rept("1;", maxcar)

mat1 = "{" & Left(mat1, Len(mat1) - 1) & "}"
mat2 = "{" & Left(mat2, Len(mat2) - 1) & "}"
mat3 = "{" & Left(mat3, Len(mat3) - 1) & "}"

MsgBox Evaluate("index(" & plg & ",match(max(mmult(code(mid(lower(" & plg & _
")&rept(0," & maxcar & ")," & mat1 & ",1))*512^" & mat2 & "," & mat3 & _
")),mmult(code(mid(lower(" & plg & ")&rept(0," & maxcar & ")," & mat1 & _
",1))*512^" & mat2 & "," & mat3 & "),0))")

End Sub


Pour la fonction perso, j'ai adapté pour gérer les valeurs d'erreurs dans la
plage:

Function Max_Alpha(Plage As Range)
Dim C As Range, x$, z$, maVal As Variant, i%
For Each C In Plage
If Not IsError(C) Then
x = ""
For i = 1 To Len(C)
x = x & Format(Asc(LCase(Mid(C, i, 1))), "000")
Next
If x > z Then
z = x: maVal = C
End If
End If
Next
'On Error Resume Next
If z = "" Then
Max_Alpha = ""
Else
Max_Alpha = maVal
End If
End Function

Faut quand même avouer que la fonction TRIV() de Laurent apparaît comme un très
bon choix. :-)

Salutations,

Daniel M.
1 2