Extraire nombre (de 100 a 100 000) d'une cellule

bonjour

je cherche a extraire des nombres d'une phrase

le nombre que je cherche a extraire peux varier de 1 000 a 9 000 000

bien entendu il n'a jamais la meme place dans la phrase et il peux y avoir d'autres nombres dans la pharse mais qui n'ont rien a voir

ex :: -toto a trois maison une de - 1000 € ,cette maison n'est pas - top au - 36 rue du lac - 89 522 cedex -

ex2 : la 2 imie maison de toto a une valeur de - 1 000 000 € c'est une jolie - villa au - 90 avenue du lac - 21 255 cedex

le chiffre que je cherche est tjs une somme , après le chiffre j'ai un espace et le signe € et avant le chiffre j'ai tjs " - "mais par contre" -" je le trouve a plusieurs endroits dans la phrase

voici la formule que 'jutilise =STXT(B35;TROUVE("€";B35;1)-8;7)

cela ne fonctionne pas vraiment

Bonsoir @ tous,

voir PJ si cela te convient.

28foufie.xlsx (9.34 Ko)

@ + +

Bonsoir et Bonne Année !

Si votre texte est en cellule A1 :

=STXT(A1;TROUVE("de - ";A1)+5;TROUVE(" €";A1)-TROUVE("de - ";A1)-5)

TROUVE("de - ";A1) : on recherche la position de départ de "de - " qui compte 5 caractères

+5 : donc on rajoute 5 pour avoir l'emplacement du premier chiffre du nombre recherché

TROUVE(" €";A1) : on recherche la position de départ des caractères " €"

-TROUVE("de - ";A1)-5 : on retire l'ensemble des caractères avant le chiffre

STXT : on extrait la partie du texte qui se trouve entre "de - " jusqu'au texte " €"

@ bientôt

LouReeD


Décidemment !!! j'aurais toujours un train de retard !

En plus il y a le CNUM pour passer en chiffre !!!

Vite à moi la vision super plus de araignées !!!!

R@chide je m'incline

@ bientôt

LouReeD

merci de vos réponses

ah oui bonne et heureuse a année a tous et toutes

pour l'instant aucune ne fonctionne .

cnum ne fonctionne pas , je suppose c'est a cause des séparateur de milliers ( code 160) qui sont dans la phrase

car lorsque ma formule marche 'j'ai du utiliser la formule ci dessous arrondir les angles et la convertir en chiffre

transforme ce que j'ai trouve en chiffre >>

SI(ESTERREUR(CHERCHE(CAR(160);O28))=FAUX;(GAUCHE(O28;CHERCHE(CAR(160);O28)-1) & DROITE(O28;NBCAR(O28)-CHERCHE(CAR(160);O28)))*1;O28*1)

cela dit vos reponses m'aide .

je ne sais pas trop comment ecrire au format excel la formule pour le moment

mais la formule pourrait etre = trouve "€" , a partir de € cherche a gauche le "-" et extrait le texte

je pensais avoir trouve une solution intermédiaire en 2 tps , et en cherchant de nouveau €

mais cela ne fonctionne pas car parfois le - il y a deja 2 , 3 ou 4 - avant d'avoir les sommes

Bonjour et bonne année à tous ...

Sans apporter de solution concrète, je pense que dans un cas comme celui-ci à géométrie variable, il faudrait utiliser les fonctions régulières. C'est une piste peut-être à explorer, sinon une macro devrait s'en sortir.

bonjour

ci-joint mon fichier

Cela fonctionne avec ma solution, du moins chez moi....

@ bientôt

Loureed

Deuxième fichier joint pour la deuxième phrase.... Ca marche aussi !


LouReeD a écrit :

Bonsoir et Bonne Année !

Si votre texte est en cellule A1 :

=STXT(A1;TROUVE("de - ";A1)+5;TROUVE(" €";A1)-TROUVE("de - ";A1)-5)

TROUVE("de - ";A1) : on recherche la position de départ de "de - " qui compte 5 caractères

+5 : donc on rajoute 5 pour avoir l'emplacement du premier chiffre du nombre recherché

TROUVE(" €";A1) : on recherche la position de départ des caractères " €"

-TROUVE("de - ";A1)-5 : on retire l'ensemble des caractères avant le chiffre

STXT : on extrait la partie du texte qui se trouve entre "de - " jusqu'au texte " €"

@ bientôt

LouReeD

Je pense bien que tout est dit... on cherche le "de - " afin de ne pas se tromper de "-"

"-toto a trois maison une de - 1000 € ,cette maison n'est pas - top au - 36 rue du lac - 89 522 cedex - "

dans la première phrase il est en position 26 pour de "d" donc le chiffre commence à 26 + 5 qui correspond à "d"+"e"+" "+"-"+" "

31

on cherche la position de " €" qui est en position 35

on extrait donc le texte qui se trouve entre la position 31 à 35-1 = 31à34 = 1000

C'est ce que fait la formule, comme c'est du texte et que vous voulez peut-être des chiffre, le tout multiplié par 1 !

Bonne journée

LouReeD

17classeur1.xlsx (9.38 Ko)
18classeur2.xlsx (9.38 Ko)

merci de votre aide , je ne doute pas que votre code focntionne mais

le souci est que j'ai volontairement réduits et simplifié ( sinon elles font plus de 300 caractères ) les phrases en

et je pensais l'avoir écrit dans mon précédent post (ce n'es pas le cas ) mais il n'y a pas forcement "de "

dans la phrase

voici une autre par exemple

'-toto a trois maisons de style avec une valeurs - 30 000 € ,cela fait bcp de maisons , -3 maisons dans un lotissement a lille

le point de repère est € ( il y en as un seul dans la phrase ) et notre valeurs commence forcement avec " - " mais ce n'est pas le premier "-" ni meme un "-" fixe il peut etre 2 ,3 imie ,4 ieme ect ..

Bonjour,

Je propose la formule la plus longue.

Une formule à la Tulipe_3_4

=STXT(STXT(A1;1;TROUVE("€";A1)-1);
TROUVE("-";STXT(A1;1;TROUVE("€";A1)-1);
NBCAR(STXT(A1;1;TROUVE("€";A1)-1))-NBCAR(SUBSTITUE(STXT(A1;1;TROUVE("€";A1)-1);"-";"")))+2;
NBCAR(STXT(A1;1;TROUVE("€";A1)-1)))*1

C'est de plus plus élégant que les propositions de LouReed et de R@chid.

Bonne année à toutes et tous.

Cdlt.

Edit:

12xlp-foufie.xlsx (8.96 Ko)

Plus élégant ?

16foufie.xlsm (17.99 Ko)

Re,

Une proposition plus abordable pour le commun des mortels .

15xlp-foufie.xlsm (14.49 Ko)
Option Explicit
Public Function Montant_EUR(str)
Dim tmp
    If IsEmpty(str) Then
        Montant_EUR = vbNullString
        Exit Function
    End If
    tmp = Split(str, "€")(0)
    tmp = Split(tmp, "-")
    Montant_EUR = CLng(tmp(UBound(tmp)))
End Function

Fallait tout dire depuis le début

Et il est vrai Jean-Eric que je ne porte pas le costume...

Alors l'élégance ...

@ bientôt

LouReeD

merci de m'avoir aidee

je pense je vais faire par etape

aucune des 2 solutions ne fonctionne

celle de jean eric j'ai le droit a joli #valeurs si je laisse le *-1 , si je l'enleve j'obtiens bien une partie du texte avec les chiffres mais j'ai trop de texte

pour celle stellson j'ai le droit a un joli (# nom ) ou alors rien ( et comme j'avoue je en comprend pas je en peux rien y faire )

ci joint le fichier avec un exmple de vrai phrae ( mais raccourci )


avec le vba cela fonctionne

merci a tous et encore bravo !!! j'avoue que je susi un peu perdu la ( c'est devenu un peu complexe mais cela fonctionne )

14foufie-1.xlsm (19.07 Ko)

Re,

Ton fichier avec la formule personnalisée qui donne les bons résultats (formule jointe précédemment, inchangée).

Quel est le souci?

12foufie-v2.xlsm (20.96 Ko)

Re bonjour,

Et bien voilà avec de vrai hypothèses on y arrive et sans macro...

=SUBSTITUE(STXT(STXT(A2;TROUVE("€";A2;1)-10;10);TROUVE("-";STXT(A2;TROUVE("€";A2;1)-10;10);1)+2;NBCAR(STXT(A2;TROUVE("€";A2;1)-10;10))-1);CAR(160);"")*1

voir fichier joint

@ bientôt

LouReeD

Re,

Bien joué, LouReed

Ha oui merci à vous car j'ai retranscrit votre énoncé :

je recherche : €

je recule de 10 caractères pour "englober" le prix

J'extrais la partie de texte à partir de ce point j'ai donc le prix global voir un peu plus

Sur cette extraction je cherche le caractère "-"

à partir de ce tiret j'extrait le prix

je transforme le prix avec car(160) en prix sans car(160) et je multiplie par 1 pour retomber sur un nombre

@ bientôt

LouReeD

encore Merci a tous

et bravo

je vais utiliser le code sans vba du coup

YES !!!!

En toute modestie !!!!

@ bientôt

LouReeD

foufie a écrit :

pour celle stellson j'ai le droit a un joli (# nom ) ou alors rien ( et comme j'avoue je en comprend pas je en peux rien y faire )

Bonjour,

Il faut activer les macros ...

L' "expression régulière" est un outil puissant, mais pas facile d'emploi je le reconnais.

L'expression est ici :

-[0-9 ]+€

Ce qui signifie :

Je commence par un tiret

Je prends ensuite n'importe quel caractère compris entre 0 et 9 et l'espace

Je le prends autant de fois que nécessaire (+)

Je termine par €

Rechercher des sujets similaires à "extraire nombre 100 000"