Type de donnée: Erreur ENORME!!

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

jeromegmc

XLDnaute Occasionnel
Boujour à tous,

Savez vous que pour VBA 7.6-7.4 = 0.199999999999999 lorsque l'on ne définit pas le type de donnnée de notre variable (par défaut elle est définit pas VBA en tant que 'Variant').

Je trouve cela très dérangeant, et ce qui est encore plus dérangeant, c'est que le résultat différe, pour le type de données 'single' selon que l'on affiche le résultat dans une cellule ou dans un msgbox.

Quelqu'un pourrait-il m'éclairer sur cette ERREUR qui fausse beaucoup de résultats?

Voici un code qui permet de vérifier le résultat de 'monnombre=7.6-7.4' en fonction du type de donnée et qui affiche 2 résultats: un dans excel et un dans un msgbox:

Code:
Sub type_donnée()

Dim i, j
Dim MyInteger As Integer
Dim MyLong As Long
Dim MySingle As Single
Dim MyDouble As Double
Dim MyVariant As Variant
Dim MyCurrency As Currency

MyInteger = 7.6 - 7.4
MyLong = 7.6 - 7.4
MySingle = 7.6 - 7.4
MyDouble = 7.6 - 7.4
MyVariant = 7.6 - 7.4
MyCurrency = 7.6 - 7.4

j = 1
Cells(1, j).Value = 'Type de donnée'
Cells(2, j).Value = 'Integer'
Cells(3, j).Value = 'Long'
Cells(4, j).Value = 'Single'
Cells(5, j).Value = 'Double'
Cells(6, j).Value = 'Variant'
Cells(7, j).Value = 'Currency'

j = 2
Cells(1, j).Value = 'Résultat de 7.6-7.4'
Cells(2, j).Value = MyInteger
Cells(3, j).Value = MyLong
Cells(4, j).Value = MySingle
Cells(5, j).Value = MyDouble
Cells(6, j).Value = MyVariant
Cells(7, j).Value = MyCurrency

Range('B2:B7').Select
    Range('B7').Activate
    Selection.NumberFormat = '0.000000000000000'


MsgBox 'Voici le résultat de  ''monnombre = 7.6-7.4'' en fonction du type de donnée déclaré:' _
& Chr(10) & Chr(10) & _
'Interger:' & Chr(9) & Chr(9) & MyInteger & Chr(10) & _
'Long: ' & Chr(9) & Chr(9) & MyLong & Chr(10) & _
'Single: ' & Chr(9) & Chr(9) & MySingle & Chr(10) & _
'Double: ' & Chr(9) & Chr(9) & MyDouble & Chr(10) & _
'Variant: ' & Chr(9) & Chr(9) & MyVariant & Chr(10) & _
'Currency: ' & Chr(9) & MyCurrency & Chr(10)


End Sub

Merci d'avance.

A+

Message édité par: jeromegmc, à: 16/11/2005 10:39
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
729
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
902
Réponses
3
Affichages
922
Réponses
2
Affichages
1 K
Réponses
3
Affichages
878
Retour