CONTROLE DE SAISIE SIMPLE D'UN NOMBRE DÉCIMAL POUR EVITER LES ERREURS MATHÉMATIQ

Golog Messages postés 224 Date d'inscription jeudi 31 janvier 2002 Statut Membre Dernière intervention 22 décembre 2009 - 25 avril 2004 à 01:35
CSCGreg Messages postés 2 Date d'inscription jeudi 2 décembre 2004 Statut Membre Dernière intervention 31 mars 2006 - 31 mars 2006 à 11:27
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/22238-controle-de-saisie-simple-d-un-nombre-decimal-pour-eviter-les-erreurs-mathematiques-par-exemple

CSCGreg Messages postés 2 Date d'inscription jeudi 2 décembre 2004 Statut Membre Dernière intervention 31 mars 2006
31 mars 2006 à 11:27
Je pense que malgré les critiques se code est très bien fait et bien commenté, pour chaque étape.
Finalement le code de PCPunch devient presque aussi long, surtout quand il y a plusieurs textbox.
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
26 avril 2004 à 16:21
Evidement que ca ne rendai pas le mm resultat que toi il suffisait de le modifié!!!!

Allez comme ça on va stopper la discution, une petite fonction qui permet de definir le nombre de décimal aprés la virgule :

Private Sub Text1_KeyPress(KeyAscii As Integer)
If InStr(Text1, ",") <> 0 And KeyAscii 46 Then KeyAscii 0: Exit Sub
If NbDeci(Text1, 2) <> True And KeyAscii <> 8 Then KeyAscii = 0: Exit Sub
If KeyAscii 46 Then KeyAscii 44
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 And KeyAscii <> 44 Then KeyAscii = 0
End Sub

Public Function NbDeci(Src As TextBox, nb As Integer) As Boolean
'Src le textbox Nb le nombre de décimal autorisé
Dim Pos As Integer
Dim Decim As String
Pos = InStr(Src, ",")
If Pos <> 0 Then
Decim = Mid(Src, Pos + 1, Len(Src) - Pos + 1)
If Len(Decim) nb Then NbDeci False Else NbDeci = True
Else
NbDeci = True
End If
End Function

Voila , je pense qu'il n'y a plus rien a ajouter maintenant ????
cs_letrust Messages postés 9 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 25 janvier 2005
26 avril 2004 à 16:12
lol jte demande pas de le faire jte diser juste que dans ton code ça ne render pas le meme resultat que moi, c bon jsé le faire =) sinon merci en faite la fonction Chr jconnaissais pas =)
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
26 avril 2004 à 16:07
La mm chose ne plus condensé et moin de ligne lol :

Private Sub Text1_KeyPress(KeyAscii As Integer)
If InStr(Text1, ",") <> 0 And KeyAscii 46 Then KeyAscii 0: Exit Sub
If KeyAscii 46 Then KeyAscii 44
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 And KeyAscii <> 44 Then KeyAscii = 0
End Sub
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
26 avril 2004 à 15:47
Ouuuuu la la !!! Malheur !! lol
Faut vraiment tout te faire letrust :

Dim Virgule As Boolean

Private Sub Form_Load()
Virgule = False
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii 46 And Not Virgule Then KeyAscii 44: Virgule = True
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 And KeyAscii <> 44 Then KeyAscii = 0
End Sub

++
cs_letrust Messages postés 9 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 25 janvier 2005
26 avril 2004 à 15:43
hm... le test isnumeric ok... mais si jmet 2 virgules avec ton code pcpunch ça passe...
cs_letrust Messages postés 9 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 25 janvier 2005
26 avril 2004 à 14:34
j'avoue que je me suis un peu casser la tête pour rien... bon je laisse quand même la source comme ça, sinon ça serai pu Ma source =) ba merci bien a tous, pour drissou oui ba pour faire ça ya quelque truc a changer et c'est bon... =)
cs_drissou Messages postés 160 Date d'inscription dimanche 7 décembre 2003 Statut Membre Dernière intervention 14 janvier 2009
26 avril 2004 à 08:56
Bonjour à tous, j'ai pour l'instant plutot utilisé vos sources sans en publier.
je n'ai pas bien lu le source en cause, mais au vu des réponses voilà comment je vois la chose. Pour moi il faut aller plus loin dans la gestion des chiffres..
- d'une part il faut évidemment gérer le fait que le caractère soit un chiffre et donc pourquoi pas IsNuméric.
- cependant d'autres choses sont à vérifier:
- gestion du signe moins, avec un seule exemplaire , en autorisant ou nom les chiffres négatifs
- gestion de la virgule avec là aussi le controle d'un seule exemmplaier de virgule
- gestion du nombre de chiffres après la virgule..

Si quelqu'un est intérssé je peux essayer (jamais fait) d'uploader ma fonction..

Bravo à tous les fournisseurs de psources

Drissou
FeelCode Messages postés 278 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 27 avril 2006 1
26 avril 2004 à 03:21
Pcpunch tu lui mache le boulot lol ;D

Petite remarque reafecter une valeur a une variable, d'une procédure (KeyAscii ) dans ton cas c est pas très bon car risque de confusion et écrasement des données.

ensuite utilise byte aux lieux de integer pour economiser de la mémoire pour plus d'info dans ton vb place toi sur integer et tape F1
ensuite cherche dans l'aide quelque chose comme: type de donnée
pcpunch Messages postés 1243 Date d'inscription mardi 7 mai 2002 Statut Membre Dernière intervention 18 février 2019 5
26 avril 2004 à 00:04
FeelCode a raison !!!!!
Moi je trouve que ta source illustre formidablement bien, le dicton : "Pourquoi faire simple quand on peu faire compliqué!!!!"

Mm resultat en 2 lignes fait en qq secondes !!!!

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii 46 Then KeyAscii 44
If Not IsNumeric(Chr(KeyAscii)) And KeyAscii <> 8 And KeyAscii <> 44 Then KeyAscii = 0
End Sub

Voila ++
cs_letrust Messages postés 9 Date d'inscription mercredi 26 février 2003 Statut Membre Dernière intervention 25 janvier 2005
25 avril 2004 à 11:24
Pour le IsNumeric je suis OK, mais le test se fera apres la saisie... mais j'avoue que le msg ferez ch*** mais c'est un exemple... jvais voir ce que je peut faire du IsNumeric...
FeelCode Messages postés 278 Date d'inscription vendredi 16 avril 2004 Statut Membre Dernière intervention 27 avril 2006 1
25 avril 2004 à 03:35
Euh il y a de l'idée
mai vala un une autre facon de voir la chose
If IsNumeric("asdf") = True Then
Stop' c est du numerique
Else
Stop'c est pas du numérique
End If
Apres tu reprend ton code pour la virgule :)
Mai en principe on laisse le choix a l'utilisateur de façons a ce qu'il utilise les deux c est beaucoup plus simple et sa lui évite de ce prendre un boite de dialogue qui fait ch*** a la moindre faute de frappe enfin bon c est juste mon avis
Golog Messages postés 224 Date d'inscription jeudi 31 janvier 2002 Statut Membre Dernière intervention 22 décembre 2009
25 avril 2004 à 01:35
mdr quand meme le bordel de vérification :p
Rejoignez-nous