OVH Cloud OVH Cloud

CELLULE : dissocier le texte du numérique

5 réponses
Avatar
trup
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

5 réponses

Avatar
JB
Bonjour,

Solution fonction perso (dans un module):

Function début(chaine)
début = Val(chaine)
End Function

Function fin(chaine)
i = 1
Do While Asc(Mid(chaine, i, 1)) <= 57
i = i + 1
Loop
fin = Mid(chaine, i)
End Function

Cordialement JB
Avatar
AV
Quelle que soit la position du nombre non décimal)
Matricielle (validation par ctrl+maj+entrée)

=1*(STXT(A1;EQUIV(0;(ESTERREUR(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)*1)*1);0);NBCAR(A1)-SOMME((ESTERREUR(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)*1)*1))))

AV
Avatar
docm
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"

merci d'avance

trup


Avatar
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


Avatar
AV
Pour en rajouter un peu...
Quelle que soit la position du nombre, décimal ou pas, séparateur décimal
virgule ou point :

Matricielle :
=1*(STXT(SI(ESTNUM("0,1"*1);A1;SUBSTITUE(A1;",";"."));EQUIV(0;(ESTERREUR(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)*1)*1);0);NBCAR(A1)+1-SOMME((ESTERREUR(STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)*1)*1))))

AV