OVH Cloud OVH Cloud

grande.valeur (nombres + texte)

25 réponses
Avatar
j-pascal
Bonsoir,

J'ai une colonne composée de chiffres et de lettres :

50V
A28
90N
100V
G58
etc.

Actuellement, j'utilise une macro pour faire un tri croissant.
Est-il possible avec la fonction GRANDE.VALEUR de réaliser ce même tri
dès lors qu'il y a des lettres ?

Mes essais fonctionnent avec des nombres, mais pas avec le texte.

Merci d'avance pour votre aide.

JP

10 réponses

1 2 3
Avatar
j-pascal
Bonjour Xavier,

Désolé, j'ai toujours le même msg d'erreur, ce qui néanmoins ne me fait
pas douter de la justesse de ta formule. J'ai dû oublier de préciser
qqch !

Bon we

JP

je me permet une petit correction de la formule


=GRANDE.VALEUR(SI(ESTERREUR(GAUCHE(D1:D5;1)*1);DROITE(D1:D5;NBCAR(D1:D5)-1);GAUCHE(D1:D5;NBCAR(D1:D5)))*1;LIGNE())

Validation matricielle :Ctrl + maj + Enter

Xavier


"j-pascal" a écrit dans le message de groupe de
discussion :
Bonsoir,

C'est dommage, ça ne fonctionne pas dans mon exemple (mon tableau de
référence comprend des données elles-mêmes issues de formules
matricielles). J'obtiens après ajustement des plages : #VALEURS! dans
toutes les cellules.
A noter que le bas de ma colonne de références renvoit des zéros.
Je vais refaire des essais demain, car ta proposition m'intéresse beaucoup.

@+

JP

juste pour le plaisir,
suppose que tes données en D1:D5
Il est possible d'utiliser grande valeur de cette manière :

Validation maticielle :Ctrl + maj + Enter
Tu sélectionnes la plage par exemple E1:E5 , appuie sur la touche F2
tu copies la formule et tu valides...tu obtiendras tes nombres en ordre
décroissant

=GRANDE.VALEUR(SI(ESTERREUR(GAUCHE(D1:D5;1)*1);DROITE(D1:D5;NBCAR(D1:D5)-1);GAUCHE(D1:D5;NBCAR(D1:D5)-1))*1;LIGNE())



"j-pascal" a écrit dans le message de groupe de
discussion :
Bonsoir,

J'ai une colonne composée de chiffres et de lettres :

50V
A28
90N
100V
G58
etc.

Actuellement, j'utilise une macro pour faire un tri croissant.
Est-il possible avec la fonction GRANDE.VALEUR de réaliser ce même tri
dès lors qu'il y a des lettres ?

Mes essais fonctionnent avec des nombres, mais pas avec le texte.

Merci d'avance pour votre aide.

JP








Avatar
j-pascal
Bonjour Jacques,

Je suis bluffé !! J'adore ce genre de formule qui me dépasse !

(Par contre j'ai des "#NA" en regard du "champ" qui contient des zéros
; je sais les traiter avec RECHERCHEV, mais en matriciel !?!?)

@+ ?

JP

Bonjour,

=INDEX(champ;EQUIV(LIGNE(INDIRECT("1:"&LIGNES(champ)));NB.SI
(champ;"<="&champ);0))
Valider avec Maj+ctrl+entrée

http://boisgontierjacques.free.fr/fichiers/jb-trimatriciel.zip

JB
http://boisgontierjacques.free.fr


On 30 jan, 21:36, j-pascal wrote:
Bonsoir,

J'ai une colonne composée de chiffres et de lettres :

50V
A28
90N
100V
G58
etc.

Actuellement, j'utilise une macro pour faire un tri croissant.
Est-il possible avec la fonction GRANDE.VALEUR de réaliser ce même tri
dès lors qu'il y a des lettres ?

Mes essais fonctionnent avec des nombres, mais pas avec le texte.

Merci d'avance pour votre aide.

JP




Avatar
Coetera
> Actuellement, j'utilise une macro pour faire un tri croissant.
Est-il possible avec la fonction GRANDE.VALEUR de réaliser ce même tri dès
lors qu'il y a des lettres ?



********************

Pour éviter quelques surprises que peut réserver une matricielle et pouvoir
gérer ce genre de liste :

50 V
Azzerty
XY6120
90 N
100 VZ
G58

mieux vaut utiliser une fonction perso (dans un module ordinaire) :

Function MaxNum(plage As Range)
leMax = ""
For Each c In plage
y = c.Value
For i = 1 To Len(c)
x = Mid(c, i, 1)
If Not IsNumeric(x) Then
z = Application.Substitute(y, x, "")
y = z
End If
Next
On Error Resume Next
If z * 1 > leMax * 1 Then leMax = z
Next
MaxNum = leMax
End Function

Etc
Avatar
Merguez07
as tu bien fait la validation matricielle Ctrl + maj + Enter ?


"j-pascal" a écrit dans le message de groupe de
discussion :
Bonjour Xavier,

Désolé, j'ai toujours le même msg d'erreur, ce qui néanmoins ne me fait
pas douter de la justesse de ta formule. J'ai dû oublier de préciser qqch
!

Bon we

JP

je me permet une petit correction de la formule


=GRANDE.VALEUR(SI(ESTERREUR(GAUCHE(D1:D5;1)*1);DROITE(D1:D5;NBCAR(D1:D5)-1);GAUCHE(D1:D5;NBCAR(D1:D5)))*1;LIGNE())

Validation matricielle :Ctrl + maj + Enter

Xavier


"j-pascal" a écrit dans le message de groupe de
discussion :
Bonsoir,

C'est dommage, ça ne fonctionne pas dans mon exemple (mon tableau de
référence comprend des données elles-mêmes issues de formules
matricielles). J'obtiens après ajustement des plages : #VALEURS! dans
toutes les cellules.
A noter que le bas de ma colonne de références renvoit des zéros.
Je vais refaire des essais demain, car ta proposition m'intéresse
beaucoup.

@+

JP

juste pour le plaisir,
suppose que tes données en D1:D5
Il est possible d'utiliser grande valeur de cette manière :

Validation maticielle :Ctrl + maj + Enter
Tu sélectionnes la plage par exemple E1:E5 , appuie sur la touche F2
tu copies la formule et tu valides...tu obtiendras tes nombres en ordre
décroissant

=GRANDE.VALEUR(SI(ESTERREUR(GAUCHE(D1:D5;1)*1);DROITE(D1:D5;NBCAR(D1:D5)-1);GAUCHE(D1:D5;NBCAR(D1:D5)-1))*1;LIGNE())



"j-pascal" a écrit dans le message de groupe de
discussion :
Bonsoir,

J'ai une colonne composée de chiffres et de lettres :

50V
A28
90N
100V
G58
etc.

Actuellement, j'utilise une macro pour faire un tri croissant.
Est-il possible avec la fonction GRANDE.VALEUR de réaliser ce même tri
dès lors qu'il y a des lettres ?

Mes essais fonctionnent avec des nombres, mais pas avec le texte.

Merci d'avance pour votre aide.

JP












Avatar
j-pascal
oui, bien sûr !

as tu bien fait la validation matricielle Ctrl + maj + Enter ?


"j-pascal" a écrit dans le message de groupe de
discussion :
Bonjour Xavier,

Désolé, j'ai toujours le même msg d'erreur, ce qui néanmoins ne me fait pas
douter de la justesse de ta formule. J'ai dû oublier de préciser qqch !

Bon we

JP

je me permet une petit correction de la formule


=GRANDE.VALEUR(SI(ESTERREUR(GAUCHE(D1:D5;1)*1);DROITE(D1:D5;NBCAR(D1:D5)-1);GAUCHE(D1:D5;NBCAR(D1:D5)))*1;LIGNE())

Validation matricielle :Ctrl + maj + Enter

Xavier


"j-pascal" a écrit dans le message de groupe de
discussion :
Bonsoir,

C'est dommage, ça ne fonctionne pas dans mon exemple (mon tableau de
référence comprend des données elles-mêmes issues de formules
matricielles). J'obtiens après ajustement des plages : #VALEURS! dans
toutes les cellules.
A noter que le bas de ma colonne de références renvoit des zéros.
Je vais refaire des essais demain, car ta proposition m'intéresse
beaucoup.

@+

JP

juste pour le plaisir,
suppose que tes données en D1:D5
Il est possible d'utiliser grande valeur de cette manière :

Validation maticielle :Ctrl + maj + Enter
Tu sélectionnes la plage par exemple E1:E5 , appuie sur la touche F2
tu copies la formule et tu valides...tu obtiendras tes nombres en ordre
décroissant

=GRANDE.VALEUR(SI(ESTERREUR(GAUCHE(D1:D5;1)*1);DROITE(D1:D5;NBCAR(D1:D5)-1);GAUCHE(D1:D5;NBCAR(D1:D5)-1))*1;LIGNE())



"j-pascal" a écrit dans le message de groupe de
discussion :
Bonsoir,

J'ai une colonne composée de chiffres et de lettres :

50V
A28
90N
100V
G58
etc.

Actuellement, j'utilise une macro pour faire un tri croissant.
Est-il possible avec la fonction GRANDE.VALEUR de réaliser ce même tri
dès lors qu'il y a des lettres ?

Mes essais fonctionnent avec des nombres, mais pas avec le texte.

Merci d'avance pour votre aide.

JP














Avatar
Merguez07
un petit ci-joint please car chez moi ça marche

xavier

"j-pascal" a écrit dans le message de groupe de
discussion :
oui, bien sûr !

as tu bien fait la validation matricielle Ctrl + maj + Enter ?


"j-pascal" a écrit dans le message de groupe de
discussion :
Bonjour Xavier,

Désolé, j'ai toujours le même msg d'erreur, ce qui néanmoins ne me fait
pas douter de la justesse de ta formule. J'ai dû oublier de préciser
qqch !

Bon we

JP

je me permet une petit correction de la formule


=GRANDE.VALEUR(SI(ESTERREUR(GAUCHE(D1:D5;1)*1);DROITE(D1:D5;NBCAR(D1:D5)-1);GAUCHE(D1:D5;NBCAR(D1:D5)))*1;LIGNE())

Validation matricielle :Ctrl + maj + Enter

Xavier


"j-pascal" a écrit dans le message de groupe de
discussion :
Bonsoir,

C'est dommage, ça ne fonctionne pas dans mon exemple (mon tableau de
référence comprend des données elles-mêmes issues de formules
matricielles). J'obtiens après ajustement des plages : #VALEURS! dans
toutes les cellules.
A noter que le bas de ma colonne de références renvoit des zéros.
Je vais refaire des essais demain, car ta proposition m'intéresse
beaucoup.

@+

JP

juste pour le plaisir,
suppose que tes données en D1:D5
Il est possible d'utiliser grande valeur de cette manière :

Validation maticielle :Ctrl + maj + Enter
Tu sélectionnes la plage par exemple E1:E5 , appuie sur la touche F2
tu copies la formule et tu valides...tu obtiendras tes nombres en
ordre décroissant

=GRANDE.VALEUR(SI(ESTERREUR(GAUCHE(D1:D5;1)*1);DROITE(D1:D5;NBCAR(D1:D5)-1);GAUCHE(D1:D5;NBCAR(D1:D5)-1))*1;LIGNE())



"j-pascal" a écrit dans le message de groupe de
discussion :
Bonsoir,

J'ai une colonne composée de chiffres et de lettres :

50V
A28
90N
100V
G58
etc.

Actuellement, j'utilise une macro pour faire un tri croissant.
Est-il possible avec la fonction GRANDE.VALEUR de réaliser ce même
tri
dès lors qu'il y a des lettres ?

Mes essais fonctionnent avec des nombres, mais pas avec le texte.

Merci d'avance pour votre aide.

JP


















Avatar
michdenis
http://cjoint.com/?ccnimwFxJS


"j-pascal" a écrit dans le message de groupe de discussion :

Bonsoir,

C'est dommage, ça ne fonctionne pas dans mon exemple (mon tableau de
référence comprend des données elles-mêmes issues de formules
matricielles). J'obtiens après ajustement des plages : #VALEURS! dans
toutes les cellules.
A noter que le bas de ma colonne de références renvoit des zéros.
Je vais refaire des essais demain, car ta proposition m'intéresse
beaucoup.

@+

JP

juste pour le plaisir,
suppose que tes données en D1:D5
Il est possible d'utiliser grande valeur de cette manière :

Validation maticielle :Ctrl + maj + Enter
Tu sélectionnes la plage par exemple E1:E5 , appuie sur la touche F2
tu copies la formule et tu valides...tu obtiendras tes nombres en ordre
décroissant

=GRANDE.VALEUR(SI(ESTERREUR(GAUCHE(D1:D5;1)*1);DROITE(D1:D5;NBCAR(D1:D5)-1);GAUCHE(D1:D5;NBCAR(D1:D5)-1))*1;LIGNE())



"j-pascal" a écrit dans le message de groupe de
discussion :
Bonsoir,

J'ai une colonne composée de chiffres et de lettres :

50V
A28
90N
100V
G58
etc.

Actuellement, j'utilise une macro pour faire un tri croissant.
Est-il possible avec la fonction GRANDE.VALEUR de réaliser ce même tri
dès lors qu'il y a des lettres ?

Mes essais fonctionnent avec des nombres, mais pas avec le texte.

Merci d'avance pour votre aide.

JP


Avatar
j-pascal
A la lecture de ton classeur, je crois comprendre mon problème ...

Certes je veux un tri de toutes les valeurs, mais sans les tronquer ;
je ne veux pas récupérer que la partie numérique. Donc ta proposition
ne répond effectivement pas à mes besoins que j'aurai certainement mal
formulés.
A partir de là, j'ai "compris" que si une cellule ne comportait pas de
valeur numérique, ex : "AWX", j'obtenais la même erreur que celle
constatée dans mon classeur "#VALEUR!".

Je conserve ton exemple pour de futurs besoins,

Merci

JP

http://cjoint.com/?ccnimwFxJS


"j-pascal" a écrit dans le message de groupe de
discussion :
Bonsoir,

C'est dommage, ça ne fonctionne pas dans mon exemple (mon tableau de
référence comprend des données elles-mêmes issues de formules
matricielles). J'obtiens après ajustement des plages : #VALEURS! dans
toutes les cellules.
A noter que le bas de ma colonne de références renvoit des zéros.
Je vais refaire des essais demain, car ta proposition m'intéresse
beaucoup.

@+

JP

juste pour le plaisir,
suppose que tes données en D1:D5
Il est possible d'utiliser grande valeur de cette manière :

Validation maticielle :Ctrl + maj + Enter
Tu sélectionnes la plage par exemple E1:E5 , appuie sur la touche F2
tu copies la formule et tu valides...tu obtiendras tes nombres en ordre
décroissant

=GRANDE.VALEUR(SI(ESTERREUR(GAUCHE(D1:D5;1)*1);DROITE(D1:D5;NBCAR(D1:D5)-1);GAUCHE(D1:D5;NBCAR(D1:D5)-1))*1;LIGNE())



"j-pascal" a écrit dans le message de groupe de
discussion :
Bonsoir,

J'ai une colonne composée de chiffres et de lettres :

50V
A28
90N
100V
G58
etc.

Actuellement, j'utilise une macro pour faire un tri croissant.
Est-il possible avec la fonction GRANDE.VALEUR de réaliser ce même tri
dès lors qu'il y a des lettres ?

Mes essais fonctionnent avec des nombres, mais pas avec le texte.

Merci d'avance pour votre aide.

JP




Avatar
j-pascal
Bonsoir,

Merci pour cette proposition.
Ca ne fonctionne pas chez moi ; j'ai dû faire une erreur qq part.

"plage" est bien la plage à traiter ?
La fonction "=MaxNum(plage)" est bien copiée dans la première cellule
de la colonne où je compte récupérer le résultat, puis recopiée en bas
?

Ta solution m'intéresse, mais je n'arrive pas à l'appliquer pour
l'instant.

A bientôt ?

JP

Actuellement, j'utilise une macro pour faire un tri croissant.
Est-il possible avec la fonction GRANDE.VALEUR de réaliser ce même tri dès
lors qu'il y a des lettres ?



********************

Pour éviter quelques surprises que peut réserver une matricielle et pouvoir
gérer ce genre de liste :

50 V
Azzerty
XY6120
90 N
100 VZ
G58

mieux vaut utiliser une fonction perso (dans un module ordinaire) :

Function MaxNum(plage As Range)
leMax = ""
For Each c In plage
y = c.Value
For i = 1 To Len(c)
x = Mid(c, i, 1)
If Not IsNumeric(x) Then
z = Application.Substitute(y, x, "")
y = z
End If
Next
On Error Resume Next
If z * 1 > leMax * 1 Then leMax = z
Next
MaxNum = leMax
End Function

Etc


Avatar
Coetera
> Merci pour cette proposition.
Ca ne fonctionne pas chez moi ; j'ai dû faire une erreur qq part.



La réponse fournie est une fonction personnalisée pour renvoyer le "nombre max"
Si tu veux trier une plage en n'utilisant que les valeurs numériques contenues,
utiliser cette fonction dans une colonne adjacente et trier sur cette colonne
ajoutée

Function ExtractNum(cel As Range)
ExtractNum = ""
For i = 1 To Len(cel)
x = Mid(cel, i, 1)
If IsNumeric(x) Then ExtractNum = (ExtractNum & x) * 1
Next
End Function

http://www.cijoint.fr/cjlink.php?file=cj200902/cijzOROaX0.xls

PS : Ton exemple n'en comportant pas, le traitement des valeurs numériques avec
décimales n'est pas assuré, mais ça peut se faire

Etc
1 2 3