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