Extraction du nombre juste avant un symbole

Résolu/Fermé
frenzy7 Messages postés 58 Date d'inscription samedi 24 février 2018 Statut Membre Dernière intervention 23 février 2024 - 24 févr. 2018 à 22:39
 frenzy7 - 27 févr. 2018 à 02:59
Bonjour,

Dans un paragraphe sur Excel, je souhaite extraire le nombre juste avant le symbole "€"

Exp: Abcdefg daldj, Fkap 0983290 dlfl 100€ fdzfzelfzl czkre.

Dans cet exp, je souhaite extraire le nombre "100".
Le nombre n'est pas figé et peut être placé à n'importe quel endroit dans le paragraphe.
PS: Le nombre peut être différent, si c'était 1000 je souhaite extraire "1000" c'est pour celà que je ne peux pas utiliser certaines fonctions comme STXT() qui comptent le nombre de caractères avant un caractère défini.

J'ai beau cherché je ne trouve pas. Je souhaite faire appel aux plus balaises d'entre vs car je galère depuis plusieurs jours.
Je vous remercie d'avance.

6 réponses

jee pee Messages postés 39610 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 avril 2024 9 230
Modifié le 25 févr. 2018 à 11:59
Bonjour,

Condition, il faut que devant le nombre il y ait un blanc
En A1 ta chaine, je le fais en 2 fois car en une seule la formule devient illisible car trop longue
en A2 :
=GAUCHE(A1;CHERCHE("€";A1)-1)
on supprime ce qu'il y a à partir de €
en A3 :
=DROITE(A2;NBCAR(A2)-CHERCHE("§";SUBSTITUE(A2;" ";"§";NBCAR(A2)-NBCAR(SUBSTITUE(A2;" ";"")))))
on ne garde que ce qu'il y a après le dernier blanc

Cdlt

1
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
25 févr. 2018 à 12:35
Bonjour

Ou bien avec une fonction personnalisée à condition comme dans les formules de jee pee qu'il y ait une blanc devant le nombre et après le € et qu'un nombre comme 10000 ne soit pas écrit 10 000
Copier la macro et la coller dans un module de l'Editeur VBA (ALT+F11 pour ouvrir l'éditeur - Insertion - Module - coller la macro)

Function isolmonet(plage As Range)
tablo = Split(plage, " ")
For n = 0 To UBound(tablo)
If Right(tablo(n), 1) = "€" Then isolmonet = Application.WorksheetFunction.Substitute(tablo(n), "€", "")
Next
End Function


Syntaxe à utiliser dans la feuille : = isolmonet(A1)

Cdlmnt
Via
1
frenzy7 Messages postés 58 Date d'inscription samedi 24 février 2018 Statut Membre Dernière intervention 23 février 2024 2
26 févr. 2018 à 13:17
Merci pr votre aide. Par rapport à mon cas, un soucis se pose:
Le format monétaire a disparu. Comment faire pour le réactiver, ceci dans la meme macro?
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
26 févr. 2018 à 13:39
Bonjour

Tu demandais : je souhaite extraire le nombre "100".
Donc dans la macro je fais remplacer le $ par du vide

Soit tu formates ta cellule où tu entre la fonction en format monétaire et tu auras un nombre utilisable (pour d'autres calculs) soit tu modifie ainsi la ligne de macro
If Right(tablo(n), 1) = "€" Then isolmonet = tablo(n)

mais tu auras du texte non utilisable dans un calcul
0
frenzy7 Messages postés 58 Date d'inscription samedi 24 février 2018 Statut Membre Dernière intervention 23 février 2024 2
26 févr. 2018 à 13:56
Je veux utiliser la cellule pr d'autres calculs. Du coup je dois transformer cette cellule en formule au lieu d'utiliser une macro? Quelle est cette formule?
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
26 févr. 2018 à 15:31
????
D'abord j'ai fait oubli dans la macro c'est de convertir la valeur texte en nombre donc tu remplaces la ligne avec le IF par celle ci :
If Right(tablo(n), 1) = "€" Then isolmonet = Val(Application.WorksheetFunction.Substitute(tablo(n), "€", ""))
Tu mets la formule =isolmonet dans ta cellule, la macro retourne une valeur numérique et pour faire afficher en monétaire il faut que ta cellule soit en format monétaire dans le Ruban Accueil - Nombre ou clic droit dans la cellule - Format de cellule)
0
frenzy7 Messages postés 58 Date d'inscription samedi 24 février 2018 Statut Membre Dernière intervention 23 février 2024 2
26 févr. 2018 à 16:11
Je suis bloqué, dans Module1 de Visual Basic Editor j'ai ceci:

Sub isolmonet()
'
' isolmonet Macro
'

'
Application.Goto Reference:="isolmonet"
End Sub


A quel endroit dois-je coller la macro? J'ai tt essayé (un peu partout lol) je n'arrive pas à valider la macro
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
26 févr. 2018 à 18:58
Je ne sais pas d'où provienennt ces lignes de codes dans ton module1, elles n'appartiennent pas à la macro que t'ai fournie !
Efface toutes ces lignes dans le module 1 et colles à la place celles-ci :
Function isolmonet(plage As Range)
tablo = Split(plage, " ")
For n = 0 To UBound(tablo)
If Right(tablo(n), 1) = "€" Then isolmonet = Val(Application.WorksheetFunction.Substitute(tablo(n), "€", "")) 
Next
End Function


Si tu n'y arrives pas poste un exemple de ton fichier sur mon-partage.fr, fais créer un lien que tu copies et reviens coller ici, je regarderais
0
J'ai testé ca fonctionne. La formule retounrne bien un nombre. Au final je vais le laisser sans le "€" c'est mieux.
Il ne reste plus qu'à convertir la cellule en monétaire (car impossible de faire des calculs avec cette celluleen laissant comme ca). Quelle serait cette formule? Si on peut le faire ds la meme macro ca m'arrangerait
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
26 févr. 2018 à 20:51
Il n'y a pas de formule à mettre c'est le format de ta cellule qu'il faut mettre en monétaire selon la procédure que je t'indiquais dans mon message 6
On ne peut pas le faire dans la macro car ce n'est pas une macro qui s'applique à une cellule mais une fonction qui crée une sorte de formule
Si tu veux adapter le format d'une cellule par macro il faut le faire dans une autre macro qui se déclencherait apr exemple par une double clic dans la cellule
0
Oui je comprends bien mais ma cellule est déjà au format monétaire! Lorsque j'applique la macro le format monétaire semble disparaitre (mais qd je regarde son format, il est bien là!), j'ai beau recliqué sur monétaire, celà ne change rien.

En effet la cellule n'affiche pas les ",00 €" comme je voudrais qu'elle le fasse afin de pouvoir faire mes calculs.

J'ai fait mes recherches, testé et retesté, j'ai utilisé la formule =CNUM(SUBSTITUE(A1);CAR(160);""))
Avec notre fonction isolmonet celà donne:
=CNUM(SUBSTITUE(isolmonet(A4);CAR(160);""))

Le probleme est finalement résolu :)
0
Sur le meme principe voici un exp d'une chaine de caracteres alphanumérique:
abcd 123 efgh456 impayé100e ijkl789.
Je désire récupérer dans une cellule le nombre 100. Avec le mot de référence "impayé", quelle serait la macro à créer? J'ai testé avec l'autre (remplacé € par impayé je n'y arrive pas, probablement parce que la récupération est à droite cette fois)
0
via55 Messages postés 14402 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 18 avril 2024 2 702
26 févr. 2018 à 22:41
Oui il faut adapter la macro ainsi :
If Left(tablo(n), 6) = "impayé" Then isolmonet = Val(Application.WorksheetFunction.Substitute(tablo(n), "impayé", ""))

mais elle va retourner 100e
c'est ce qui me gêne dans ton exemple, après le 100, il y a toujours une seule lettre ?

0
Peut importe pr la lettre e, ca passe. En tt cas merci bcp :) :) :)
0