Extraire des caractères dans une chaîne

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Eric Dé

XLDnaute Occasionnel
Bonjour,

Je souhaiterais extraire des caractères situés entre 2 tirets (du 6) dans une chaîner de caractères.
La longueur totale de la chaîne peut être variable ainsi que la longueur de la chaîne à extraire elle-même.

Exemples :
Dans la chaîne : AAAAAAA-233-BBBBBB, je dois extraire 233
Dans la chaîne : CCC-44-DDDD, je dois extraire 44

Auriez-vous une formule à me proposer ?

Merci d'avance.
Eric
 
Bonjour

Pour extraire les chiffres dans une chaine

Une formule parmi d'autres

Code:
=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))))

Formule matricielle validation par Ctrl+Maj+Entrée

Cdt
 
Bonjour le fil, le forum

Pour le fun aussi, mais pas pour les macistes 😉
Une UDF
VB:
Function NOMBRESEUL(Plage As Range)
With CreateObject("vbscript.regexp")
    .Global = True: .Pattern = "[^\d]+"
    NOMBRESEUL = .Replace(Plage.Text, vbNullString) * 1
End With
End Function
Syntaxe d'utilisation
Si données en A1, en B1 par exemple: =NOMBRESEUL(A1)
 
Re

Une autre formule pour le fun et pour braver la tempête qui ici fait rage 😉
(formule non matricielle)
Code:
=1*STXT(A1;MIN(CHERCHE({0;1;2;3;4;5;6;7;8;9};A1&"0123456789"));TROUVE("-";A1;MIN(TROUVE({0;1;2;3;4;5;6;7;8;9};$A1&" 0123456789")))-MIN(TROUVE({0;1;2;3;4;5;6;7;8;9};$A1&" 0123456789")))
 
Bonsoir Eric Dé,

Essayez cette fonction que m'avaient concoctée ceux qui y sont nommés. Vous verrez, elle marche très bien.
VB:
Function NumDansCadena(chaîne As String, Optional n As Byte = 1) As Double
'Récupère un chiffre dans une chaîne de caractères
'BOISGONTIER / david84 / mapomme
'- chaîne : la chaîne de caractères qui comprend 1, voire davantage de chiffres séparés par du texte
'- n : la position du chiffre dans la chaîne s'il y en a plusieurs
'Exemple : NumDansCadena("Romina a 1 magnifique chatte, 2 petits chiens adorables & 4 sœurs à tomber à la renverse",3) --> 4

    Dim Obj As Object, a As Object
  
    Set Obj = CreateObject("vbscript.regexp")
    Obj.Global = True
    Obj.Pattern = "\d+(" & Application.DecimalSeparator & "\d+)?"
    Set a = Obj.Execute(chaîne)
    NumDansCadena = a(n - 1)
End Function
 
joke, joke...

Prenons un exemple concret :
Supposons qu'en A1 il y ait la chaîne = "Romina a 1 magnifique chatte, 2 petits chiens adorables & 4 sœurs à tomber à la renverse"

NOMBRESEUL(A1) = 124 ---> pb au cas où il y ait plusieurs nombres dans la chaîne

NumDansCadena(A1) = 1 ou NumDansCadena(A1;1) = 1
NumDansCadena(A1;2) = 2
NumDansCadena(A1;3) = 4

Nettement plus discriminatif.

[private joke]
Moi, ce sont les sœurs de Romina qui m'intéressent
Porque Romina ¡ya fue!
[/private joke]
 
Re

@Magic_Doctor
[private joke bis]
Je ne suppose pas (ou alors 6 lignes plus bas)
Je me base sur ce que dit le demandeur
Exemples :
Dans la chaîne : AAAAAAA-233-BBBBBB, je dois extraire 233
Dans la chaîne : CCC-44-DDDD, je dois extraire 44
De toute façon, ta solution ou la mienne ne sont pas de bonnes solutions😀
Car supposons que l'utilisateur possède un mac 😉
Quoique moi, j'avais prévenu dés le début 😉
Pour le fun aussi, mais pas pour les macistes 😉
Une UDF
[/private joke bis]
 
Re

[private joke ou joke unilatérale apparemment]
Peut-être, mais il y a des XLDnautes (dont je suis pas) qui utilisent Excel avec un Mac.
Et comme dit plus bas, RegExp ne fonctionnera que sous Windows.
Pas conséquent nos propositions avec CreateObject("vbscript.regexp") sont effectivement discriminatives puisque ne fonctionnant que sur un seul OS 😉
[/private joke ou joke unilatérale apparemment]
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour