OVH Cloud OVH Cloud

Convertir du texte en valeur

6 réponses
Avatar
Symon
Bonjour
j'ai besoin un petit coup de main
j'ai une table avec des champs texte qui se presente comme cela

000337500
000337500
000-60000
038000000
000081600


je dois transformer tout ca en valeur


er obtenir
33.75
33.75
-6.00
3800
8.16


Le probleme c'est le (-)

je pensait passer par 2 retrochamps


000337500 1
000337500 1
000060000 -1
038000000 1
000081600 1

Mais je connais pas la syntaxe pour faire ces operation avec des query genre

Si le champs toto contient entre autre le signe - alors -1 sinon 1

et

dans le champs toto remplacer les - par des 0

Merci d'avance pour votre aide simon

6 réponses

Avatar
Le Méruvien
Bonjour,
tu met un champ par exemple [valeur]=val(champ_texte)
le 1er sera : 3375 , donc si tu veut 33.75, il faut mettre:
valeur=val(champ_texte)/100
mais ça ne marchera pas pour tous tes champs, car par exemple pour le champ
03800000 tu aura 38, donc là il faudra le multiplier par 100,

"Symon" <sy.mon#_Nospam_#@#_Nospam_#freesbee.fr> a écrit dans le message de
news:


Bonjour
j'ai besoin un petit coup de main
j'ai une table avec des champs texte qui se presente comme cela

000337500
000337500
000-60000
038000000
000081600


je dois transformer tout ca en valeur


er obtenir
33.75
33.75
-6.00
3800
8.16


Le probleme c'est le (-)

je pensait passer par 2 retrochamps


000337500 1
000337500 1
000060000 -1
038000000 1
000081600 1

Mais je connais pas la syntaxe pour faire ces operation avec des query
genre


Si le champs toto contient entre autre le signe - alors -1 sinon 1

et

dans le champs toto remplacer les - par des 0

Merci d'avance pour votre aide simon




Avatar
Symon
En l'occurence c'est une division par 10 000 mais la n'est pas mon probleme
le probleme se situe a la 3 eme ligne de mon exemple quans il y a un -

car: val(000-60000)= 0 ( la tete a toto )

et je suis dans le CACA.....

Merci qd meme

"Le Méruvien" wrote in message
news:403487d7$0$28121$
Bonjour,
tu met un champ par exemple [valeur]=val(champ_texte)
le 1er sera : 3375 , donc si tu veut 33.75, il faut mettre:
valeur=val(champ_texte)/100
mais ça ne marchera pas pour tous tes champs, car par exemple pour le
champ

03800000 tu aura 38, donc là il faudra le multiplier par 100,

"Symon" <sy.mon#_Nospam_#@#_Nospam_#freesbee.fr> a écrit dans le message
de

news:


Bonjour
j'ai besoin un petit coup de main
j'ai une table avec des champs texte qui se presente comme cela

000337500
000337500
000-60000
038000000
000081600


je dois transformer tout ca en valeur


er obtenir
33.75
33.75
-6.00
3800
8.16


Le probleme c'est le (-)

je pensait passer par 2 retrochamps


000337500 1
000337500 1
000060000 -1
038000000 1
000081600 1

Mais je connais pas la syntaxe pour faire ces operation avec des query
genre


Si le champs toto contient entre autre le signe - alors -1 sinon 1

et

dans le champs toto remplacer les - par des 0

Merci d'avance pour votre aide simon








Avatar
Daniel Carollo
Bonjour Symon!

La fonction Val() suivie d'une division devrait resoudre votre probleme...

--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"Symon" <sy.mon#_Nospam_#@#_Nospam_#freesbee.fr> wrote in message
news:


Bonjour
j'ai besoin un petit coup de main
j'ai une table avec des champs texte qui se presente comme cela

000337500
000337500
000-60000
038000000
000081600


je dois transformer tout ca en valeur


er obtenir
33.75
33.75
-6.00
3800
8.16


Le probleme c'est le (-)

je pensait passer par 2 retrochamps


000337500 1
000337500 1
000060000 -1
038000000 1
000081600 1

Mais je connais pas la syntaxe pour faire ces operation avec des query
genre


Si le champs toto contient entre autre le signe - alors -1 sinon 1

et

dans le champs toto remplacer les - par des 0

Merci d'avance pour votre aide simon




Avatar
3stone
Salut,

"Symon"
j'ai une table avec des champs texte qui se presente comme cela
000337500
000337500
000-60000
038000000
000081600

je dois transformer tout ca en valeur

33.75
33.75
-6.00
3800
8.16





Au départ, tu as du texte...
que tu veux récuperer en valeur numérique ?


utilise cette petite fonction que tu mets dans une module général:

Function Str2Num(sIn) As Double
Do Until Left(sIn, 1) <> "0"
sIn = Mid(sIn, 2)
Loop
sIn = Left(sIn, Len(sIn) - 2)
Str2Num = Val(sIn) / 100
End Function


dans une requête, par exemple :

Expr: Str2Num([TonChamp])



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------

Avatar
Daniel Carollo
En direct de ma fenetre de debug:

? val(000-60000)/10000
-6

Access 2002.


--
Daniel :-)

Computing Technologies International - www.computing-tech.com - We
provide solutions...

"Symon" <sy.mon#_Nospam_#@#_Nospam_#freesbee.fr> wrote in message
news:%23hpTf%
En l'occurence c'est une division par 10 000 mais la n'est pas mon
probleme

le probleme se situe a la 3 eme ligne de mon exemple quans il y a un -

car: val(000-60000)= 0 ( la tete a toto )

et je suis dans le CACA.....

Merci qd meme

"Le Méruvien" wrote in message
news:403487d7$0$28121$
Bonjour,
tu met un champ par exemple [valeur]=val(champ_texte)
le 1er sera : 3375 , donc si tu veut 33.75, il faut mettre:
valeur=val(champ_texte)/100
mais ça ne marchera pas pour tous tes champs, car par exemple pour le
champ

03800000 tu aura 38, donc là il faudra le multiplier par 100,

"Symon" <sy.mon#_Nospam_#@#_Nospam_#freesbee.fr> a écrit dans le message
de

news:


Bonjour
j'ai besoin un petit coup de main
j'ai une table avec des champs texte qui se presente comme cela

000337500
000337500
000-60000
038000000
000081600


je dois transformer tout ca en valeur


er obtenir
33.75
33.75
-6.00
3800
8.16


Le probleme c'est le (-)

je pensait passer par 2 retrochamps


000337500 1
000337500 1
000060000 -1
038000000 1
000081600 1

Mais je connais pas la syntaxe pour faire ces operation avec des query
genre


Si le champs toto contient entre autre le signe - alors -1 sinon 1

et

dans le champs toto remplacer les - par des 0

Merci d'avance pour votre aide simon












Avatar
Symon
J'ai un peu modifié je crois que ca va marcher merci Beaucoup

Function Str2Num(sIn) As Double
Do Until Left(sIn, 1) <> "0"
sIn = Mid(sIn, 2)
Loop
sIn = Left(sIn, Len(sIn))
Str2Num = Val(sIn) / 10000
End Function

Simon

"3stone" wrote in message
news:
Salut,

"Symon"
j'ai une table avec des champs texte qui se presente comme cela
000337500
000337500
000-60000
038000000
000081600

je dois transformer tout ca en valeur

33.75
33.75
-6.00
3800
8.16





Au départ, tu as du texte...
que tu veux récuperer en valeur numérique ?


utilise cette petite fonction que tu mets dans une module général:

Function Str2Num(sIn) As Double
Do Until Left(sIn, 1) <> "0"
sIn = Mid(sIn, 2)
Loop
sIn = Left(sIn, Len(sIn) - 2)
Str2Num = Val(sIn) / 100
End Function


dans une requête, par exemple :

Expr: Str2Num([TonChamp])



--
A+
Pierre (3stone) Access MVP
-----------------------------
http://users.skynet.be/mpfa
-----------------------------