LE NEWSMAGAZINE Nº1 DES NOUVELLES TECHNOLOGIES
626 utilisateurs connectés

bug dans office 97 ???

clem27 le 02 janvier 2009 à 20h29
bonjour,

j'aimerais savoir s'il y a un bug dans office 97. si oui, peut on corriger celui ci par un patch ???

voici le problême.
c'est dans Visual basic

j'ai une macro

pour ce calcul, ça fait par exemple

2.89 - 2 = 0.8900000001

or c'est faux

je vous met mon code ici

ub caisse()

Dim T As Integer
Dim O As Long
Dim M As Double
Dim nbligne As Integer

nbligne = ActiveSheet.Cells(2, 7).Value + 1
M = Application.InputBox("t'as de l'argent ???")
If M = 0 Then
Exit Sub
End If

If M < 0 Then
MsgBox "l'argent ne peux être négatif", vbCritical, "error !!!"
Exit Sub
End If
For T = 2 To nbligne
ActiveSheet.Cells(T, 10).Value = ActiveSheet.Cells(T, 2).Value
Next T


c'est ici que ça plante
ici T = 6
nbligne = 13
M=2,89
O=1
activesheet.cells(T,1).value = 2

au final, M = 0,890000001

il y a un bug

For T = 2 To nbligne
O = Int(M / ActiveSheet.Cells(T, 1).Value)
M = M - O * ActiveSheet.Cells(T, 1).Value

If O > ActiveSheet.Cells(T, 2) Then
M = Abs(ActiveSheet.Cells(T, 2).Value - O) * ActiveSheet.Cells(T, 1).Value + M
ActiveSheet.Cells(T, 2).Value = 0
Else
ActiveSheet.Cells(T, 2).Value = ActiveSheet.Cells(T, 2).Value - O
End If
Next T
For T = 2 To nbligne
ActiveSheet.Cells(T, 3).Value = ActiveSheet.Cells(T, 10).Value - ActiveSheet.Cells(T, 2).Value
ActiveSheet.Cells(T, 2).Value = ActiveSheet.Cells(T, 10).Value
If ActiveSheet.Cells(T, 3).Value = 0 Then
ActiveSheet.Cells(T, 3).Value = "rien"
End If
Next T
If M > 0 Then
ActiveSheet.Range(ActiveSheet.Cells(2, 3), ActiveSheet.Cells(nbligne, 3)).Value = "pas possible"
MsgBox "cette appareil ne rend pas la monnaie !!!", vbCritical, "état de la machine :"
Else
MsgBox "voici ta monnaie !!!", vbInformation, "état de la machine :"
End If

End Sub





voilà

j'ai mis tout mon code au cas où

merci de votre aide

j'ai office 97 sr-2b
-------
vous aimez débattre ??? cliquer ici :
http://agora.clicforum.fr/index.php
rene©1953 le 03 janvier 2009 à 19h02
salut,

tu es sûr du nombre de "0" (zéros) dans ton 0.89000...01?

vb et excel97 ne "travaillent" qu'avec 16 chiffres, et pour eux, 0.8900000000000001 et 0.89, c'est pareil. il faudrait peut-être que tu dimensionnes le nombre de décimales avec un truc du genre :
MsgBox Round(10.123456789, 2)

@+
-->Message édité par rene©1953 le 03/01/2009 19:04:11<--
-------
aide toi et le ciel t'aidera

René  
clem27 le 04 janvier 2009 à 11h03
ok, merci de ton aide
je vais faire ça

a+

et non, le nombre de 0 était au pif donc je n'en suis pas sur.
-------
vous aimez débattre ??? cliquer ici :
http://agora.clicforum.fr/index.php


À PROPOS DU FORUM MICRO HEBDO

LES FORUMS THÉMATIQUES ET TECHNIQUES

LES FORUMS GÉNÉRAUX

ARCHIVES DU FORUM

publicité
01Informatique
01 INFORMATIQUE
L'hebdo de référence des décideurs informatiques.
Micro Hebdo
MICRO HEBDO
L'hebdo qui vous simplifie la micro
et Internet.
L'Ordinateur Individuel
L'ORDINATEUR INDIVIDUEL
Le mensuel informatique qui vous informe et vous conseille.
Nous contacter  |  Charte de confiance  |  Voir notice légale

01net.  -  01men  -  RMC  -  BFM Radio  -  BFM TV  -  TousLesPodcasts  -  01informatique.fr  -  Association RMC-BFM
Tous droits réservés © 1999 - 2009 Internext - 01net.