Récupération de nombres

Fermé
sertre - Modifié par sertre le 5/09/2015 à 00:26
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 - 5 sept. 2015 à 11:52
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

3 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
Modifié par Frenchie83 le 5/09/2015 à 03:59
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
Modifié par michel_m le 5/09/2015 à 07:11
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 lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
5 sept. 2015 à 08:40
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
5 sept. 2015 à 08:57
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 lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 338
5 sept. 2015 à 09:03
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310 > Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023
5 sept. 2015 à 11:52
Re,

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

Bon WE
0