Microsoft 365 Extraire une chaine de caractère numérique d'une cellule

Menjye

XLDnaute Nouveau
Bonjour,

Je travaille dans un fichier Excel et je dois extraire un numéro de facture au sein d'une cellule, qui n'a pas toujours la même position au sein de cette cellule et qui répond aux critères suivants :
- 9 caractères
- composée de chiffres uniquement (pas d'espace, de lettres ou de caractères spéciaux)
- qui suit toujours le motif YYMMXXXXX où YY est l'année et MM est le mois de la facture.

Voici un exemple de libellé de cellule dans lequel je dois extraire ce numéro :
"Virement de Vincialis 24-01-08 240111987 test"
Je n'arrive pas à définir la formule qui retournerait le résultat "240111987". J'obtiens le résultat "24-01-08 " :(

Avez-vous des idées car je suis dessus depuis plusieurs jours et je n'y parviens pas...

Merci à vous !
 

Efgé

XLDnaute Barbatruc
Bonjour
Une proposition dans le vide pour cause de fichier test absent, avec le nom en A1
VB:
=LET(
MonTab;FRACTIONNER.TEXTE(A1;" ");
MesChiffres;SI(ESTERREUR(MonTab*1);"";MonTab);
MonExtrac;SI(ESTERREUR(DATEVAL(MesChiffres));MesChiffres;"");
JOINDRE.TEXTE("";1;MonExtrac)
)

Cordialement

EDIT : Bonjour @djidji59430 , désolé, pas rafraîchi
 
Dernière édition:

djidji59430

XLDnaute Barbatruc
Je l'ai refait avec let
VB:
=
=LET(

frac

;STXT($I$4;SEQUENCE(NBCAR($I$4));1)

;chiffre;(CODE(frac)>=CODE(0))*(CODE(frac)<=CODE(9))

;plage;TROUVE(REPT(1;9);CONCAT(chiffre))-1+LIGNE(1:9)

;JOINDRE.TEXTE("";;INDEX(frac;plage)))
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonsoir à tous,

Petite fonction VBA, très simple :
VB:
Function Numero$(x$, n)
Dim i%
For i = 1 To Len(x) - n + 1
    If Mid(x, i, n) Like String(n, "#") Then Numero = Mid(x, i, n)
Next
End Function
A+
 

Pièces jointes

  • Classeur(1).xlsm
    14.8 KB · Affichages: 11

patricktoulon

XLDnaute Barbatruc
re
bonjour
visiblement ta chaine numérique est entourée d'espaces
ben cherche les espaces et sert toi de mid (STXT en formule)
à l'ancienne
VB:
=STXT(A1;CHERCHE(" ";A1;1)+1;CHERCHE(" ";A1;CHERCHE(" ";A1;1)+1)-CHERCHE(" ";A1;1)-1)
1706603669335.png


= STXT(ton texte ; index du premier espace+1 ; index du 2d espace moins l'index du premier moins 1)
 

patricktoulon

XLDnaute Barbatruc
re Bonjour à tous
ok @job75 bonnet blanc blanc bonnet on garde le même principe
sauf que le premier cherche c'est le format "??-??-??"
VB:
=STXT(A1;CHERCHE("??-??-??";A1;1)+9;CHERCHE(" ";A1;CHERCHE("??-??-??";A1;1)+9+1)-(CHERCHE("??-??-??";A1;1)+9))
testé sur le post #6
sur 2021 avec LET ca devient du pipi de chat la formule ;)
 

Discussions similaires

Statistiques des forums

Discussions
315 091
Messages
2 116 117
Membres
112 664
dernier inscrit
jujubaroude