XL 2019 position du dernier caractère numérique d'une chaine de caractère

philppe27

XLDnaute Occasionnel
Bonjour à tous,
Existe-t-il une formule excel qui permet de trouver la position du dernier caractère numérique dans une chaine de caractère ?

Merci d'avance pour votre aide
 

Victor21

XLDnaute Barbatruc
Bonjour, Philippe27.

La chaîne en A1, essayez
=SIERREUR(TROUVE(DROITE(1*STXT(A1;EQUIV(1;1*ESTNUM(1*STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1));0);SOMME(1*ESTNUM(1*STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)))));A1);"")
A valider en matriciel (Ctrl+Maj+Entrée les accolades apparaissent en début : { et en fin de formule : }


Limite gênante : les chiffres doivent impérativement être uniques (pas de 11, de 202 ou de 566)
 

job75

XLDnaute Barbatruc
Bonjour philppe27, Patrick,

Voyez le fichier joint et cette formule matricielle en B1, à valider par Ctrl+Maj+Entrée :
Code:
=STXT(A1;MAX(SI(ESTNUM(-STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1));LIGNE(INDIRECT("1:"&NBCAR(A1)))));1)
A+
 

Pièces jointes

  • Classeur(1).xlsx
    9.9 KB · Affichages: 4

Staple1600

XLDnaute Barbatruc
Bonsoir le fil, philippe27, Victor21, job75

Une autre formule qui renvoie la position du dernier caractère numérique en partant de la gauche
Si en A1, on a : abc12e
Et en B1 cette formule =AGREGAT(14;6;TROUVE({1;2;3;4;5;6;7;8;9;0};A1;LIGNE(INDIRECT("1:"&NBCAR(A1))));1) renvoie 5.
NB: L'inconvénient c'est qu'elle ne fonctionnera qu'à partir de Excel 2010.
 

job75

XLDnaute Barbatruc
Salut JM,

Ah oui pardon c'est la dernière position qui est demandée donc fichier (2) avec la formule matricielle en B1 :
VB:
=MAX(SI(ESTNUM(-STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1));LIGNE(INDIRECT("1:"&NBCAR(A1)))))
A+
 

Pièces jointes

  • Classeur(2).xlsx
    9.9 KB · Affichages: 4

job75

XLDnaute Barbatruc
Bonsoir JB,

Tu m'as mis la puce à l'oreille, c'est en effet très simple avec EQUIV, toujours en matriciel :
VB:
=EQUIV(9;-STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1))
Fichier (3)

A+
 

Pièces jointes

  • Classeur(3).xlsx
    9.9 KB · Affichages: 7

Staple1600

XLDnaute Barbatruc
Re

=>philippe27
Autre formule (mais cette fois-ci en partant de la droite ;))
La position
=EQUIV(1;INDEX(--ESTNUM(--STXT(A1;NBCAR(A1)+1-LIGNE(INDIRECT("1:"&NBCAR(A1)));1));0);0)
Et pour se compliquer la tâche et si vraiment tu ne veux pas de matriciel
=NBCAR(A1)+1-EQUIV(1;INDEX(--ESTNUM(--STXT(A1;NBCAR(A1)+1-LIGNE(INDIRECT("1:"&NBCAR(A1)));1));0);0)
Avec en A1: abc12efg333hi, cette dernière formule renvoie 11
(comme la dernière proposée par job75 qui est quand même beaucoup plus simple à saisir non ? (je parle en nombre de caractères) )
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 915
Membres
101 838
dernier inscrit
Christelle.B86