Isoler un numérique d'une chaine alphanumérique

  • Initiateur de la discussion jef
  • Date de début
J

jef

Guest
Bonjour,

Je souhaiterais isoler un nombre dans une chaine texte

Ex:

Num789c donnerait 789
Nr56 donnerait 56
32N° donnerait 32

Comment pourrais-je m'y prendre?

Merci d'avance :)
 

Hervé

XLDnaute Barbatruc
Bonjour

Une proposition en VBA :

Public Sub isolernumeric()
Dim c As Range
Dim i As Byte
Dim nombre As String
For Each c In Range('a1:a' & Range('a65536').End(xlUp).Row)
For i = 1 To Len(c.Value)
If IsNumeric(Mid(c.Value, i, 1)) Then nombre = nombre + Mid(c.Value, i, 1)
Next i
c.Offset(0, 1) = nombre
nombre = ''
Next c
End Sub

Ce code extrait le numérique des cellules de la colonne A, et place le résultat dans la colonne B.

Si tu as besoin dun fichier exemple n'hésites pas à le dire.

A plus
 
J

jef

Guest
Ok , merci beaucoup! Sorry pour m'être tromper d'endroit
dans le forum

Mais comment utiliser la procédure dont tu parles?
Dans la cellule, je recherche la fonction isolernumeric
mais je ne la retrouve pas dans la liste
 

Hervé

XLDnaute Barbatruc
re

Ce code n'etait pas une fonction mais une procédure à lancer.

voici la fonction en découlant


Public Function isolernumeric(cellule As String)
Dim i As Byte
Dim nombre As String

If cellule = '' Then Exit Function
For i = 1 To Len(cellule)
If IsNumeric(Mid(cellule, i, 1)) Then nombre = nombre + Mid(cellule, i, 1)
Next i
If nombre = '' Then Exit Function
isolernumeric = CDbl(nombre)
End Function

Cette fonction est à placer dans un module standard, et tu peut la retrouver dans la catégorie : Personnalisées de insérer une fonction

A plus
 
P

PhiBou

Guest
Bonjour Jef, Hervé, le Forum

Avec une formule (je ne me rappelle plus de l'auteur ?) :

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

en matricielle (a valider avec : CTRL + MAJ + ENTREE)

ATTENTION : Cela ne fonctionne que si tu n'as qu'un seul nombre dans ta chaîne alpha

Bonne soirée

PhiBou
 

JeanMarie

XLDnaute Barbatruc
Bonjour Jef, Hervé

Ci-joint une proposition à l'aide d'une formule matricielle, à valider par Ctrl+Shift+Entrer.

=SUBSTITUE('0'&SOMME(SI(ESTNUM(STXT(C3;LIGNE($1:$255);1)*1);STXT(C3;LIGNE($1:$255);1);0)/(10^LIGNE($1:$255)));',';'')*1

Dans la formule, la cellule C3 contient la donnée texte

La valeur 255 dans la plage $1:$255, correspond au nombre de caractères maxi d'une cellule, tu peux l'adapter suivant le nombre maxi de caractères de tes valeurs texte.
Elle permet de retourner une matrice contenant une série de valeur{1;2;3;4;5.....252;253;254;255} qui ensuite va servir à séparer chaque caractère de la valeur texte par la fonction STXT.

le ^ correspond à la fonction puissance. (10^3 ou 10 * 100)

Si tu travailles avec un séparateur décimal '.' remplace le ',' par '.'

Cette fonction retourne une valeur erronée quand les chiffres ne sont pas contigus. (ex 30mars05 retourne 30000005)

Ci dessous une fonction matricielle, qui auto-détermine la taille de la matrice suivant le nombre de caractères de la valeur texte, et défini aussi le type de séparateur décimal.

=SUBSTITUE('0'&SOMME(SI(ESTNUM(STXT(C3;LIGNE(DECALER($A1;;;NBCAR(C3)));1)*1);STXT(C3;LIGNE(DECALER($A1;;;NBCAR(C3)));1);0)/(10^LIGNE(DECALER($A1;;;NBCAR(C3)))));SI(ESTNUM('0,1'*1);',';'.');'')*1

@+Jean-Marie

Message édité par: JeanMarie, à: 30/03/2005 17:54
 

kidu

XLDnaute Nouveau
Re : Isoler un numérique d'une chaine alphanumérique

Bonjour,
Les trois formules mentionnées pour résoudre l'isolement d'un nombre dans un texte me renvoie une erreur que je n'arrive pas a localiser.

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

=SUBSTITUE('0'&SOMME(SI(ESTNUM(STXT(C3;LIGNE($1:$2 55);1)*1);STXT(C3;LIGNE($1:$255);1);0)/(10^LIGNE($1:$255)));',';'')*1

=SUBSTITUE('0'&SOMME(SI(ESTNUM(STXT(C3;LIGNE(DECAL ER($A1;;;NBCAR(C3)));1)*1);STXT(C3;LIGNE(DECALER($ A1;;;NBCAR(C3)));1);0)/(10^LIGNE(DECALER($A1;;;NBCAR(C3)))));SI(ESTNUM('0 ,1'*1);',';'.');'')*1

Quelqu'un a t'il une solution?

Merci d'avance
 

Tibo

XLDnaute Barbatruc
Re : Isoler un numérique d'une chaine alphanumérique

Bonjour,

Sans fichier pour voir ce qui ne va pas, pas facile de pouvoir te répondre.

Peut-être remplacer les apostrophes par des guillemets ' -> "

Si problème persiste, reviens avec un petit bout de fichier exemple

@+
 

Discussions similaires

Statistiques des forums

Discussions
312 216
Messages
2 086 351
Membres
103 195
dernier inscrit
martel.jg