XL 2010 Trouver le dernier chiffre d'une chaîne de caractères

Eric Dé

XLDnaute Occasionnel
Bonjour,

Je souhaiterais connaître, pour une série de références, la position du dernier chiffre.

Par exemple :
112244 = position 6
112244abc = position 6
112244abc55 = position 10
etc..

Quelle serait la formule qui pourrait me donner ce résultat ?

Merci d'avance.
Eric
 

patricktoulon

XLDnaute Barbatruc
1668793737650.png


à valider en matriciel
 

vgendron

XLDnaute Barbatruc
Hello tous
une proposition aussi par fonction personalisée
VB:
Function dernierChiffre(chaine As String) As Long
dernierChiffre = Len(chaine)

For i = Len(chaine) To 1 Step -1
    codeasc = Asc(Mid(chaine, i, 1))
    If (codeasc >= 48 And codeasc <= 57) Then
        dernierChiffre = i
        Exit Function
    End If
Next i
If i = 0 Then dernierChiffre = 0
End Function
 

patricktoulon

XLDnaute Barbatruc
Hello tous
une proposition aussi par fonction personalisée
VB:
Function dernierChiffre(chaine As String) As Long
dernierChiffre = Len(chaine)

For i = Len(chaine) To 1 Step -1
    codeasc = Asc(Mid(chaine, i, 1))
    If (codeasc >= 48 And codeasc <= 57) Then
        dernierChiffre = i
        Exit Function
    End If
Next i
If i = 0 Then dernierChiffre = 0
End Function
@vgendron autant faire une fonction qui renvoie le sufixe (tout en un coup
VB:
Function sufixe$(chaine As String)
    For i = Len(chaine) To 1 Step -1
        If Not IsNumeric(Mid(chaine, i, 1)) Then c = Mid(chaine, i, 1) & c Else Exit For
    Next i
    sufixe$ = trim(c)
End Function

Sub test()
    MsgBox sufixe("toto titi 83  riri fifi 65 loulou 45232  taratata")
End Sub
la formule
=sufixe(A1)
renvoie la totalité si pas de numériques dans la chaine
 

mapomme

XLDnaute Barbatruc
Supporter XLD
re
oui mais regarde la capture les resultats c'est bien les tirets qui exeptent les caracteres autre que numeriques
Je ne parlais pas de l'explication logique d ela formule que j'ai faite plus haut mais de ta phrase:
je ne suis pas sur que STXT renvoie une matrice
puis

Les tirets servent juste à dire à Excel à convertir en chiffres les caractères chiffres en vrai chiffres et à renvoyer une erreur sinon [l'équivalent de cnum()] Excel fait des conversions de type implicite comme VBA le fait (et pas forcément les mêmes).
Mais avant l'application des --, on a une matrice et après on a toujours la même matrice avec les lettres en chiffres ou une erreur.
Pour moi, STXT renvoie bien une matrice qui est traitée par -- puis par sierreur puis par max.

Et puis:
c'est les deux tirets qui font le job
Une partie du job ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 321
Messages
2 087 265
Membres
103 501
dernier inscrit
talebafia