Extraire des caractères dans une chaîne

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
 

Magic_Doctor

XLDnaute Barbatruc
Vous avez oublié les Linuxiens et les malcomprenants et l'amer Denis...
De toute façon le Mac n'est pas vraiment conçu pour tout ça (d'où les limitations d'Excel dans ce petit monde qui se veut élitiste). C'est un monde fermé plutôt destiné au dessin graphique et surtout à la frime (geek oblige !). Mais j'avoue que les Mac en jettent et qu'en général c'est du bon matos.
Enfin, personnellement, j'aime bien les UDF.

Allez, pour le fun :
VB:
Function ExtractNumber(cel As Range, n As Byte) As Double
'Renvoie un chiffre situé à telle position dans un chaîne qui contient plusieurs numéros
'- n : numéro d'ordre du nombre recherché
'Exemple, en A1 il y a "Romina a 1 magnifique chatte, 2 petits chiens adorables & 4 sœurs à tomber à la renverse" : NumDansCadena([A1],3) --> 4
'job75

Dim txt As String, i%, t As String, u As String, s
txt = cel.Value: txt = Replace(txt, ",", ".")
For i = 1 To Len(txt)
    t = Mid(txt, i, 1): u = Mid(txt, i, 2)
    If t <> "." And Not (t Like "#" Or u Like "-#") Then txt = Application.Replace(txt, i, 1, " ") 'fonction REMPLACER
Next
s = Split(Application.Trim(txt)) 'SUPPRESPACE
If n - 1 > UBound(s) Then ExtractNumber = "" Else ExtractNumber = Val(s(n - 1))
End Function

Les fonctions que je communique résolvent TOUS les cas de figure, y compris celui du demandeur. Que demande de plus le peuple ?
 

Discussions similaires