Salut
dans une cellule, j'ai par ex : "123voitures" dans une autres "1526blousons"
ect ect...
je cherche une formule qui me dissocierait le numérique du texte pour
retouver dans une cellule le"123" et dans une autre le "voitures"
Si tu veux tenir compte des nombres décimaux ou négatifs ou scientifiques:
Function débutIsNumeric(chaine) a = chaine i = 1 c = Mid(a, 1, i) While IsNumeric(c & 1) And i <= Len(a) i = i + 1 c = Mid(a, 1, i) Wend If UCase(Right(Mid(c, 1, i - 1), 1)) = "E" Then i = i - 1 End If débutIsNumeric = Mid(c, 1, i - 1) End Function
Function finIsnumeric(chaine) a = chaine i = 1 c = Mid(a, 1, i) While IsNumeric(c & 1) And i <= Len(a) i = i + 1 c = Mid(a, 1, i) Wend If UCase(Right(Mid(c, 1, i - 1), 1)) = "E" Then i = i - 1 End If finIsnumeric = Mid(a, i) End Function
docm
trup déclare:
Salut dans une cellule, j'ai par ex : "123voitures" dans une autres "1526blousons" ect ect... je cherche une formule qui me dissocierait le numérique du texte pour retouver dans une cellule le"123" et dans une autre le "voitures"
merci d'avance
trup
Bonjour trup.
Si tu veux tenir compte des nombres décimaux ou négatifs ou scientifiques:
Function débutIsNumeric(chaine)
a = chaine
i = 1
c = Mid(a, 1, i)
While IsNumeric(c & 1) And i <= Len(a)
i = i + 1
c = Mid(a, 1, i)
Wend
If UCase(Right(Mid(c, 1, i - 1), 1)) = "E" Then
i = i - 1
End If
débutIsNumeric = Mid(c, 1, i - 1)
End Function
Function finIsnumeric(chaine)
a = chaine
i = 1
c = Mid(a, 1, i)
While IsNumeric(c & 1) And i <= Len(a)
i = i + 1
c = Mid(a, 1, i)
Wend
If UCase(Right(Mid(c, 1, i - 1), 1)) = "E" Then
i = i - 1
End If
finIsnumeric = Mid(a, i)
End Function
docm
trup déclare:
Salut
dans une cellule, j'ai par ex : "123voitures" dans une autres
"1526blousons" ect ect...
je cherche une formule qui me dissocierait le numérique du texte pour
retouver dans une cellule le"123" et dans une autre le "voitures"
Si tu veux tenir compte des nombres décimaux ou négatifs ou scientifiques:
Function débutIsNumeric(chaine) a = chaine i = 1 c = Mid(a, 1, i) While IsNumeric(c & 1) And i <= Len(a) i = i + 1 c = Mid(a, 1, i) Wend If UCase(Right(Mid(c, 1, i - 1), 1)) = "E" Then i = i - 1 End If débutIsNumeric = Mid(c, 1, i - 1) End Function
Function finIsnumeric(chaine) a = chaine i = 1 c = Mid(a, 1, i) While IsNumeric(c & 1) And i <= Len(a) i = i + 1 c = Mid(a, 1, i) Wend If UCase(Right(Mid(c, 1, i - 1), 1)) = "E" Then i = i - 1 End If finIsnumeric = Mid(a, i) End Function
docm
trup déclare:
Salut dans une cellule, j'ai par ex : "123voitures" dans une autres "1526blousons" ect ect... je cherche une formule qui me dissocierait le numérique du texte pour retouver dans une cellule le"123" et dans une autre le "voitures"
merci d'avance
trup
ChrisV
Bonjour Trup,
En complément de la soluce d'Alain (que je salue au passage), en supposant que la chaîne alphanum initiale se situe en A1, que la formule ait été saisie en B1 par ex., tu obtiendras, après l'extraction numérique précédente, la chaîne alpha avec:
=SUBSTITUE(A1;B1;"")
Si toutefois les valeurs numériques devaient être entières, décimales, positionnées n'importe où (avant, après, ou à "mélangées" aux valeurs alpha), tu pourrais les extraire avec cette fonction perso à placer dans un module...
Function extracNum(cellule) Dim i As Integer nB = "" For i = 1 To Len(cellule) If InStr(1, "0123456789", Mid(cellule, i, 1)) Then _ nB = nB + Mid(cellule, i, 1) Next extracNum = Evaluate(nB) End Function
ChrisV
"trup" a écrit dans le message de news:
Salut dans une cellule, j'ai par ex : "123voitures" dans une autres "1526blousons" ect ect... je cherche une formule qui me dissocierait le numérique du texte pour retouver dans une cellule le"123" et dans une autre le "voitures"
merci d'avance
trup
Bonjour Trup,
En complément de la soluce d'Alain (que je salue au passage), en supposant
que la chaîne alphanum initiale se situe en A1, que la formule ait été
saisie en B1 par ex., tu obtiendras, après l'extraction numérique
précédente, la chaîne alpha avec:
=SUBSTITUE(A1;B1;"")
Si toutefois les valeurs numériques devaient être entières, décimales,
positionnées n'importe où (avant, après, ou à "mélangées" aux valeurs
alpha), tu pourrais les extraire avec cette fonction perso à placer dans un
module...
Function extracNum(cellule)
Dim i As Integer
nB = ""
For i = 1 To Len(cellule)
If InStr(1, "0123456789", Mid(cellule, i, 1)) Then _
nB = nB + Mid(cellule, i, 1)
Next
extracNum = Evaluate(nB)
End Function
ChrisV
"trup" <trup@discussions.microsoft.com> a écrit dans le message de news:
E2241896-B1E8-492B-83D5-0DD95542A2BF@microsoft.com...
Salut
dans une cellule, j'ai par ex : "123voitures" dans une autres
"1526blousons"
ect ect...
je cherche une formule qui me dissocierait le numérique du texte pour
retouver dans une cellule le"123" et dans une autre le "voitures"
En complément de la soluce d'Alain (que je salue au passage), en supposant que la chaîne alphanum initiale se situe en A1, que la formule ait été saisie en B1 par ex., tu obtiendras, après l'extraction numérique précédente, la chaîne alpha avec:
=SUBSTITUE(A1;B1;"")
Si toutefois les valeurs numériques devaient être entières, décimales, positionnées n'importe où (avant, après, ou à "mélangées" aux valeurs alpha), tu pourrais les extraire avec cette fonction perso à placer dans un module...
Function extracNum(cellule) Dim i As Integer nB = "" For i = 1 To Len(cellule) If InStr(1, "0123456789", Mid(cellule, i, 1)) Then _ nB = nB + Mid(cellule, i, 1) Next extracNum = Evaluate(nB) End Function
ChrisV
"trup" a écrit dans le message de news:
Salut dans une cellule, j'ai par ex : "123voitures" dans une autres "1526blousons" ect ect... je cherche une formule qui me dissocierait le numérique du texte pour retouver dans une cellule le"123" et dans une autre le "voitures"
merci d'avance
trup
AV
Pour en rajouter un peu... Quelle que soit la position du nombre, décimal ou pas, séparateur décimal virgule ou point :