Récupération de nombres

sertre -  
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Dans une cellule, j'ai un nombre de personnes, sous la forme:
10 pers
142 personn.
121 pers.
4
1 000 p

Je souhaite récupérer les nombres uniquement. J'ai pensé à un InStr avec comme repère l'espace, ce qui donne:
InStr(personne, " ")
Sauf que lors de la récupération, le 1 000 se transforme en 1.

Quel moyen pourrais je utiliser sans passer par une boucle ?
A priori, je ne peux pas utiliser un Right...

Merci
A voir également:

3 réponses

Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention   338
 
Bonjour
Retourne le total des personnes dans la même cellule
Option Compare Text
Sub Addition()
    Application.ScreenUpdating = False
    Set ValCel = ActiveCell
    ValCel.Replace What:=Chr(10), Replacement:="+", LookAt:=xlPart
    ValCel.Replace What:="Personn.", Replacement:="", LookAt:=xlPart
    ValCel.Replace What:="Pers.", Replacement:="", LookAt:=xlPart
    ValCel.Replace What:="Pers", Replacement:="", LookAt:=xlPart
    ValCel.Replace What:="P", Replacement:="", LookAt:=xlPart
    ValCel.Replace What:=" ", Replacement:="", LookAt:=xlPart
    ActiveCell.Formula = "=" & ValCel
End Sub

Cdlt
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour
Excusez l'incruste

autre manière avec les expressions régulières

Option Explicit
'------------------------
Function extrait_chiffres(ByRef texto As String) As Long
Dim reg As Object
Dim extraction As Object
Dim digit

Set reg = CreateObject("vbscript.regexp")
reg.Global = True
reg.Pattern = "(\d)"
Set extraction = reg.Execute(texto)
For Each digit In extraction
extrait_chiffres = extrait_chiffres & (digit.Value)
Next digit
Set extraction = Nothing
Set reg = Nothing
End Function


Michel
0
Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention   338
 
A Sertre, je renvoi mon humble procédure, celle-ci n'affiche que les valeurs (ce qui avait été demandé) au lieu du total dans mon précédent post.
Option Compare Text
Sub Epurage()
    Application.ScreenUpdating = False
    Set ValCel = ActiveCell
    ValCel.Replace What:=Chr(10), Replacement:="-", LookAt:=xlPart
    ValCel.Replace What:="Personn.", Replacement:="", LookAt:=xlPart
    ValCel.Replace What:="Pers.", Replacement:="", LookAt:=xlPart
    ValCel.Replace What:="Pers", Replacement:="", LookAt:=xlPart
    ValCel.Replace What:="P", Replacement:="", LookAt:=xlPart
    ValCel.Replace What:=" ", Replacement:="", LookAt:=xlPart
    ValCel.Replace What:="-", Replacement:=Chr(10), LookAt:=xlPart
End Sub


Bonjour michel_m
On voit là la griffe d'un expert, j'ai testé la fonction, mais il retourne "#Valeur". Ai-je loupé quelque chose?
Je reconnais que, l'avantage de ce principe, c'est que tous les textes sont éliminés, quels qu'ils soient. mais bon, il faut maîtriser et c'est loin d'être mon cas.
Bonne journée
Cdlt
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour frenchie :o)

Je viens de réessayer (XL2007) et pas de problème mais ne prend pas le zéro s'il est le 1° chiffre (0123 ---> 123)
tite démo
http://www.cjoint.com/c/EIfg33mrOcK
0
Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention   338
 
Oui, ça marche avec des valeurs isolées dans chaque cellule, mais dans la demande initiale, toutes les valeurs sont dans la même cellule. voir en B11
https://www.cjoint.com/c/EIfhc7Oamgw
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314 > Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention  
 
Re,

effectivement dans une une seule cellule le passage à la ligne par touches est refusé. Dommage

Bon WE
0