extraire nombre plus élevé d'une chaine

Y compris Power BI, Power Query et toute autre question en lien avec Excel
b
benibeno
Membre habitué
Membre habitué
Messages : 110
Inscrit le : 20 juillet 2016
Version d'Excel : 2016

Message par benibeno » 13 novembre 2018, 15:40

Bonjour,

J'essai de récupérer le nombre le plus élevé d'une chaîne dans une cellule.
cas 1, cas 7, cas 3, cas 2, cas 5, cas 6

J'aimerais que ça me retourne 7.
Je ne peux pas ajouter des colonnes donc une formule ou une fonction VBA serait l'idéal.

Merci
Avatar du membre
Pedro22
Passionné d'Excel
Passionné d'Excel
Messages : 3'906
Appréciations reçues : 395
Inscrit le : 26 janvier 2017
Version d'Excel : 2010 FR
Version de Sheets : FR
Téléchargements : Mes applications

Message par Pedro22 » 13 novembre 2018, 16:04

Bonjour,

Une proposition de fonction personnalisée :
Public Function MaxChaine(Cellule As Range)

Dim aa() As String, bb() As String, i As Integer, Max As Integer

If Cellule.Count > 1 Then
    MaxChaine = "#PLAGE"
Else
    aa = Split(Cellule, ",")
    For i = LBound(aa) To UBound(aa)
        bb = Split(aa(i), " ")
        If CInt(bb(UBound(bb))) > Max Then Max = CInt(bb(UBound(bb)))
    Next i
    MaxChaine = Max
End If

End Function
Merci de prendre 30 sec pour lire la charte du forum.
Quelques conseils : ici
b
benibeno
Membre habitué
Membre habitué
Messages : 110
Inscrit le : 20 juillet 2016
Version d'Excel : 2016

Message par benibeno » 13 novembre 2018, 16:28

MErci pour la réponse rapide.

j'ai une erreur quand je l'applique.
Peut-être que je l'applique pas correctement !
maxchaine.png
maxchaine.png (4.61 Kio) Vu 160 fois
Avatar du membre
mbbp
Passionné d'Excel
Passionné d'Excel
Messages : 6'300
Appréciations reçues : 228
Inscrit le : 29 mars 2014
Version d'Excel : 2007 FR

Message par mbbp » 13 novembre 2018, 16:39

Bonjour le forum,
HKnpG2QCBiI_Remplacer.png
HKnpG2QCBiI_Remplacer.png (5.02 Kio) Vu 7 fois
Ensuite rechercher la virgule et remplacer par rien

Ensuite recherche l'espace et remplacer par rien

Résultat obtenu en A1(voir image jointe)

B1 : =STXT($A$1;COLONNE()-1;1)*1

A tirer vers la droite.
Chffre le plus élevé.png
Chffre le plus élevé.png (4.49 Kio) Vu 158 fois
Avatar du membre
Pedro22
Passionné d'Excel
Passionné d'Excel
Messages : 3'906
Appréciations reçues : 395
Inscrit le : 26 janvier 2017
Version d'Excel : 2010 FR
Version de Sheets : FR
Téléchargements : Mes applications

Message par Pedro22 » 13 novembre 2018, 16:44

benibeno a écrit :
13 novembre 2018, 16:28
MErci pour la réponse rapide.

j'ai une erreur quand je l'applique.
Peut-être que je l'applique pas correctement !
maxchaine.png
Où as-tu ajouté le code ? Chez moi ça fonctionne normalement avec le code placé dans un module standard...
Merci de prendre 30 sec pour lire la charte du forum.
Quelques conseils : ici
Avatar du membre
mbbp
Passionné d'Excel
Passionné d'Excel
Messages : 6'300
Appréciations reçues : 228
Inscrit le : 29 mars 2014
Version d'Excel : 2007 FR

Message par mbbp » 13 novembre 2018, 16:52

Re,

Bien sûr, les 3 "rechercher - Remplacer" successifs peuvent être réalisés en 1 seule opération :
Rechercher et remplacer.png
Rechercher et remplacer.png (5.34 Kio) Vu 150 fois
b
benibeno
Membre habitué
Membre habitué
Messages : 110
Inscrit le : 20 juillet 2016
Version d'Excel : 2016

Message par benibeno » 13 novembre 2018, 17:02

J'ai ajouté dans un module standard également.

Est-ce qu'il faut que je modifie quelque chose dans le VBA, car je l'ai laissé tel quel?
ex: MaxChaine = "#PLAGE"

aussi je ne l'applique pas à une plage, mais bien à une cellule.
ça change quelque chose ?

MErci
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'345
Appréciations reçues : 394
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 13 novembre 2018, 17:05

Bonjour,

par formule, pour s'amuser, à condition que les cas ne dépassent pas 9 :
=MAX(SI((STXT(A2;LIGNE(INDIRECT("$1:$"&NBCAR(A2)));1)>="0")*(STXT(A2;LIGNE(INDIRECT("$1:$"&NBCAR(A2)));1)<="9");--STXT(A2;LIGNE(INDIRECT("$1:$"&NBCAR(A2)));1);0))
formule matricielle à valider avec Shift+Ctrl+Entrée
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Avatar du membre
Pedro22
Passionné d'Excel
Passionné d'Excel
Messages : 3'906
Appréciations reçues : 395
Inscrit le : 26 janvier 2017
Version d'Excel : 2010 FR
Version de Sheets : FR
Téléchargements : Mes applications

Message par Pedro22 » 13 novembre 2018, 17:08

benibeno a écrit :
13 novembre 2018, 17:02
J'ai ajouté dans un module standard également.

Est-ce qu'il faut que je modifie quelque chose dans le VBA, car je l'ai laissé tel quel?
ex: MaxChaine = "#PLAGE"

aussi je ne l'applique pas à une plage, mais bien à une cellule.
ça change quelque chose ?

MErci
Rien à changer, cette partie permet justement d'afficher le message "#PLAGE" dans le cas où tu appliques la formule à une plage et pas à une cellule unique. Du coup je ne vois pas vraiment d'où vient le problème, je peux t'envoyer la formule dans un fichier, car de mon côté ça fonctionne...

EDIT : je crois qu'un détail m'avais échappé, tu n'as pas systématiquement un espace avant le nombre, donc ça fait planter la formule. Je peux te proposer autre chose, mais le prérequis est que le texte soit toujours "cas".
Merci de prendre 30 sec pour lire la charte du forum.
Quelques conseils : ici
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'345
Appréciations reçues : 394
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 13 novembre 2018, 17:12

Re,

cas jusqu'à 99 finalement :
=MAX(SI((STXT(A2;LIGNE(INDIRECT("$1:$"&NBCAR(A2)));1)>="0")*(STXT(A2;LIGNE(INDIRECT("$1:$"&NBCAR(A2)));1)<="9");--STXT(A2;LIGNE(INDIRECT("$1:$"&NBCAR(A2)));2);0))
toujours formule matricielle à valider avec Shift+Ctrl+Entrée
eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Répondre Sujet précédentSujet suivant
  • Sujets similaires
    Réponses
    Vues
    Dernier message