Entrer des données sans virgule dans formulaire Access

Fermé
pentium91 Messages postés 22 Date d'inscription mardi 17 juillet 2007 Statut Membre Dernière intervention 3 janvier 2021 - 7 oct. 2012 à 10:07
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 21 oct. 2012 à 11:19
Bonjour à tous,

voila mon probleme, j ai un formulaire qui insere les donnees saisie dans mes tables, j'aimerais que
quand je tape au clavier numérique 26 cela me donne 0,26
quand je tape au clavier numérique 212 cela me donne 2,12
quand je tape au clavier numérique 5371 cela me donne 53,71
quand je tape au clavier numérique 3851,19 cela me donne 3851,19

après plusieurs tentatives de changement au niveau du "type de données" et du "format" voir aussi "masque de saisie" je fais appel a votre bonne volonté.

Merci d'avance.

<config>Windows 7 / Access 2003

10 réponses

lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
7 oct. 2012 à 11:32
Bonjour,
Je suppose que tu saisis les données dans des textbox ?
Si oui, tu peu traiter avec...
L = "3851,19"
    If InStr(1, L, ",") <> 0 Then
        V = Val(L)
    Else
        V = L / 100
    End I

Possible que tu doive rectifier la virgule par un point avec Replace
A+
0
pentium91 Messages postés 22 Date d'inscription mardi 17 juillet 2007 Statut Membre Dernière intervention 3 janvier 2021 1
13 oct. 2012 à 12:48
@lermite222 : merci pour la réponse ...; génial
0
pentium91 Messages postés 22 Date d'inscription mardi 17 juillet 2007 Statut Membre Dernière intervention 3 janvier 2021 1
Modifié par pentium91 le 15/10/2012 à 19:55
@lermite222

bonjour,

suite à ma question "Entrer des données sans virgule dans formulaire " ,

j'ai testé ton code il fonctionne bien au niveau de la virgule mais .....

si je tape 5,05 il me renvoi 5,00 ??

si je tape 5,99 il me renvoi 5,00 ??

dès que je tape une virgule dans mon nombre : il met les centimes à 00

je pensait au début que c'était une histoire "d'arrondie" mais non

peut être le format ?? format=Euro décimales=Auto

je poursuit mes recherches ..... si tu trouves avant moi , merci d'avance

A+
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 15/10/2012 à 21:37
Oui, m'en doutais, c'est bien comme je t'ai prévenu avec Replace...
L = "3851,19" 
Dim V As Double 
Dim L As String 
L = "3851" 
    If InStr(1, L, ",") <> 0 Then 
        V = Val(Replace(L, ",", ".")) 
    Else 
        V = Val(L)) / 100 
    End If

A+
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0

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

Posez votre question
pentium91 Messages postés 22 Date d'inscription mardi 17 juillet 2007 Statut Membre Dernière intervention 3 janvier 2021 1
Modifié par pentium91 le 16/10/2012 à 19:49
@lermite222
bonjour,

pas de chance .....
j'ai essayé toutes combinaison possibles (tout nombres avec et sans virgules)

si je tape 10,00 j'ai comme résultat 0,10 ???
si je tape 20, j'ai comme résultat 0,20 ???

je te colle le code si dessous que j'ai fait hier avant ta réponse .....
car le fait de mettre " replace" ne change pas le résultat

Private Sub nouveauprix_AfterUpdate()

Dim V As Double
Dim L As String

L = nouveauprix

If InStr(1, L, ",") <> 0 Then
nouveauprix = L

Else

V = Val(L) / 100
nouveauprix = V

End If

End Sub

cela est peut être + clair

a+ pentium91
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
17 oct. 2012 à 10:01
quand tu tape le montant c'est une virgule ou un point qui est écrit ?
0
pentium91 Messages postés 22 Date d'inscription mardi 17 juillet 2007 Statut Membre Dernière intervention 3 janvier 2021 1
20 oct. 2012 à 11:31
bonjour,

quand je tape ..... c'est une virgule (pavé numérique sur clavier)

a+ pentium91
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 20/10/2012 à 14:10
Re, en simplifiant !!
Si une virgule... y faut rien faire
Private Sub nouveauprix_AfterUpdate() 
    If InStr(1, nouveauprix, ",") = 0 Then 
        nouveauprix = nouveauprix / 100 
    End If 
End Sub

Cette fois j'ai testé, ça fonctionne

Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0
pentium91 Messages postés 22 Date d'inscription mardi 17 juillet 2007 Statut Membre Dernière intervention 3 janvier 2021 1
20 oct. 2012 à 19:27
désolé ....
je pense que le problème vient d'ailleurs ....

peut être le format ?? format=Euro décimales=Auto
possible que cela soit le clavier ???

quand je tape 1 point à la place de le virgule , 1 message d'erreur apparaît :

"valeur incorrecte pour ce champ.",
vous avez peut-être entré du texte dans un champ numérique ....

peut-être aussi que je ne comprends pas la fonction "instr"
quelle différence entre :

If InStr(1, nouveauprix, ",") <> 0 Then ......

et

If InStr(1, nouveauprix, ",") = 0 Then ......

enfin bref je continu à cogiter ......
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 21/10/2012 à 12:05
Faudrait que tu apprenne à t'explqué clairement et à sérialiser les problèmes.
1°) Tu tape un nombre dans un TextBox, ta demande est de diviser par 100 si pas de virgule.
Ça je suis certain que mon dernier code fonctionne correctement. (et les autre aussi d'ailleur)
2°) Les erreurs que tu signale à nouveau ne sont pas en rapport avec l'entrée dans le TextBox mais quand tu veux inséré la valeur dans ta table !! CE QUI N'A PLUS RIEN A VOIR AVEC LE 1er PROBLÈME
Dans un champs numérique tu dois entré... beh.. du numérique et pas du texte.
Hors, 10,00 c'est du texte.
Pour entrer du texte dans ton champs numérique...
     LeChamps = CDbl(nouveauprix.Text)

Si tu veux que ça fonctionne dans tout les cas, Virgule ou point.
   L = nouveauprix.Text
    LeChamps = IIf(InStr(L, ",") <> 0, CDbl(L), Val(L))

CDbl() : Transforme un texte avec virgule en nombre
Val() : Transforme un texte avec point en nombre
L'instruction Instr() regarde s'il y a une virgule, si oui donne sont emplacement et s'il n'y a pas de virgule renvoi zéro.
A+


Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0