Petit problème (en plein milieu) lors de l’exécution du programme

Résolu/Fermé
AMK49 Messages postés 2 Date d'inscription vendredi 24 janvier 2020 Statut Membre Dernière intervention 24 janvier 2020 - Modifié le 24 janv. 2020 à 22:27
AMK49 Messages postés 2 Date d'inscription vendredi 24 janvier 2020 Statut Membre Dernière intervention 24 janvier 2020 - 24 janv. 2020 à 22:49
Bonjour,

Quelqu'un aurait-il une idée de pourquoi lorsque j'exécute le programme suivant :

Sub tableuro3()
'Insertion d'un tableau de 100 lignes et 2 colonnes
ActiveDocument.Tables.Add Range:=Selection.Range, _
NumRows:=100, NumColumns:=2, _
DefaultTableBehavior:=wdWord9TableBehavior, _
AutoFitBehavior:=wdAutoFitFixed
'On imprime un tableau de conversion d'euros en francs
'Remplissage des en-têtes de colonnes
Selection.TypeText Text:="Euro"
Selection.MoveRight Unit:=wdCell
Selection.TypeText Text:="Franc"
Selection.MoveRight Unit:=wdCell
For euros = 0 To 10 Step 0.1
Selection.TypeText Text:=euros
Selection.MoveRight Unit:=wdCell
Selection.TypeText Text:=euros * 6.55957
Selection.MoveRight Unit:=wdCell
Next euros
End Sub


J'obtiens ce tableau :

Euro Franc
0 0
0,1 0,655957
0,2 1,311914
0,3 1,967871
0,4 2,623828
0,5 3,279785
0,6 3,935742
0,7 4,591699
0,8 5,247656
0,9 5,903613
1 6,55957
1,1 7,215527
1,2 7,871484
1,3 8,527441
1,4 9,183398
1,5 9,839355
1,6 10,495312
1,7 11,151269
1,8 11,807226
1,9 12,463183
2 13,11914
2,1 13,775097
2,2 14,431054
2,3 15,087011
2,4 15,742968
2,5 16,398925
2,6 17,054882
2,7 17,710839
2,8 18,366796
2,9 19,022753
3 19,67871
3,1 20,334667
3,2 20,990624
3,3 21,646581
3,4 22,302538
3,5 22,958495
3,6 23,614452
3,7 24,270409
3,8 24,926366
3,9 25,582323
4 26,23828
4,1 26,894237
4,2 27,550194
4,3 28,206151
4,4 28,862108
4,5 29,518065
4,6 30,174022
4,7 30,829979
4,8 31,485936
4,9 32,141893
5 32,79785
5,1 33,453807
5,2 34,109764
5,3 34,765721
5,4 35,421678
5,5 36,077635
5,6 36,733592
5,7 37,389549
5,8 38,045506
5,9 38,701463
5,99999999999999 39,35742
6,09999999999999 40,013377
6,19999999999999 40,669334
6,29999999999999 41,325291
6,39999999999999 41,981248
6,49999999999999 42,637205
6,59999999999999 43,293162
6,69999999999999 43,9491189999999
6,79999999999999 44,6050759999999
6,89999999999999 45,2610329999999
6,99999999999999 45,9169899999999
7,09999999999999 46,5729469999999
7,19999999999999 47,2289039999999
7,29999999999999 47,8848609999999
7,39999999999999 48,5408179999999
7,49999999999999 49,1967749999999
7,59999999999999 49,8527319999999
7,69999999999999 50,5086889999999
7,79999999999999 51,1646459999999
7,89999999999999 51,8206029999999
7,99999999999999 52,4765599999999
8,09999999999999 53,1325169999999
8,19999999999999 53,7884739999999
8,29999999999999 54,4444309999999
8,39999999999999 55,1003879999999
8,49999999999999 55,7563449999999
8,59999999999999 56,4123019999999
8,69999999999999 57,0682589999999
8,79999999999998 57,7242159999999
8,89999999999998 58,3801729999999
8,99999999999998 59,0361299999999
9,09999999999998 59,6920869999999
9,19999999999998 60,3480439999999
9,29999999999998 61,0040009999999
9,39999999999998 61,6599579999999
9,49999999999998 62,3159149999999
9,59999999999998 62,9718719999999
9,69999999999998 63,6278289999999
9,79999999999998 64,2837859999999
9,89999999999998 64,9397429999999
9,99999999999998 65,5956999999999

Tout est bien exécuté par palier de 0,1 jusqu'à 5,9. Et ensuite au lieu de passer à 6, il passe à 5,999999999998, puis 6,099999999998, puis 6,19999999999998.... et non 6; 6,1; 6,2........
Une explication? Une idée?

Merci pour votre aide.

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
A voir également:

2 réponses

yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476
24 janv. 2020 à 22:25
bonjour,
il est recommandé d'ajouter
Option Explicit
en début de module, ce qui impose de déclarer les variables.
l'ordinateur travaillant en binaire et pas en décimal, cela introduit ce qui peut apparaître comme des erreurs d'arrondis.
je pense qu'il est facile d'y remédier en déclarant euros ainsi:
Dim euros As Currency
1
AMK49 Messages postés 2 Date d'inscription vendredi 24 janvier 2020 Statut Membre Dernière intervention 24 janvier 2020
Modifié le 24 janv. 2020 à 22:55
Bonsoir,

En effet c'était bien cela.
J'ai juste déclaré euros comme vous me l'aviez suggéré. C'est parfait merci beaucoup.
Ce sont mes débuts et j'essaie d'apprendre avec un livre qui visiblement n'écrit pas le code correctement.
0