Bonjour à tous,
J'ai effectuer une recherche et j'ai trouvé que le(s) type(s) de donnée qu'il faut utiliser pour "manier" des nombre avec des virgule c'est :
SINGLE : Réel simple, à virgule flottante en simple précision, cela s'étend de : -3.402823E38 à -1.401298E-45 pour le négatif et de 1.401298E-45 à 3.402823E38 pour le positif.
DOUBLE : Réel double, à virgule flottante en double précision, cela s'étend de : -1.79769313486231E308 à 4.94065645841247E-324 pour le négatif et de 4.94065645841247E-324 à 1.79769313486232E308 pour le positif.
Dans mon cas, j'utilise le type SINGLE car il utilise que 4 octets comparé au type DOUBLE qui en utilise 8.
PROBLEME :
J'ai un sous-formulaire qui contient 4 champs principaux qui sont :
"masse"_______"masse_controle"_______"pieces"______"pieces_controle"
(les _ entre les noms sont là à titre d'espace pour une meilleur lisibilité du post)
Les champs masse et masse_controle sont de type : Numérique --> Réel Double avec 2 décimal dans ma table.
Les champs pièces et pièces_controle sont de type : Numérique --> Entier long dans ma table.
Ce que je cherche à faire dans mon sous-formulaire c'est tester que la différence entre le champ masse et masse_controle ne soit pas plus grande que 0.5 voici le code que j'ai fait (c'est une fonction que j'appelle depuis l'évènement perte focus de mon champ controle_masse)
Lorsque je remplis mon formulaire, si je rentre comme donnée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Public Function fn_ToleranceGramme(sin_MasseEntree As Single, sin_MasseControle As Single) Dim sin_ToleranceGramme As Single Dim sin_Difference As Single sin_Difference = (sin_MasseControle - sin_MasseEntree) sin_ToleranceGramme = "0.5" If (sin_Difference <> "0") Then If (sin_Difference > sin_ToleranceGramme) Or (sin_Difference < sin_ToleranceGramme) Then MsgBox ("La différence des masse est hors tolérance !" & vbCrLf & " Différence [g] : " & sin_Difference & _ "" & vbCrLf & " Tolérence [g] : +/- 0.5"), vbCritical, "Erreur de masse" End If End If End Function
MASSE_____________CONTROLE_MASSE
12.03______________15.02 --> Pas de problème
12________________ 13 --> Pas de problème
15.02______________13--> Pas de problème
15.02______________15.01 --> PROBLEME !!! --> différence = -1.000023E-02
15.02______________15.03 --> PROBLEME !!! --> différence = 9.999275E-03
Pour les 2 dernières lignes ci-dessus, je ne comprends pas pourquoi mon MSGBOX s'affiche car les conditions sont respectées ... ...
Je ne comprend pas vraiment pourquoi j'ai cette erreur. J'ai essayé d'utiliser le type de données DOUBLE et cela me fait la même chose ...
Si vous avez une idée, elle est la bienvenue ...
Merci de votre aide ...
Partager