Bonjour
Sur la procédure ci-après VBA-Excel ne résout pas correctement l'égalité VideTotTest <> VideTot.
Pièce jointe 415196Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95 Public Sub Calcul() Dim LongTot, LargPtx, VideReel, LondDePtx As Double Dim NbPtr, NbPtx As Integer Dim VideTot, VideTot1, VideTot2, VideTotTest As Double Dim NbPtr1, NbPtr2 As Integer Dim LgPtr1, LgPtr2 As Double If IsNumeric(TXB_NbPtr.Value) And IsNumeric(TXB_LargPtx.Value) And IsNumeric(TXB_LongTot.Value) Then LongTot = TXB_LongTot.Value LargPtx = TXB_LargPtx.Value NbPtr = TXB_NbPtr.Value NbPtx = TXB_NbPtr - 1 LongDePtx = LargPtx * NbPtx VideReel = (LongTot - NbPtx * LargPtx) / NbPtr 'Mise à jour des infos de calcul (en bas) 'si nombres < 0 alors nombre = 0 If LongDePtx < 0 Then LBL_LongDePtx.Caption = 0 Else LBL_LongDePtx.Caption = LongDePtx End If If NbPtx < 0 Then LBL_NbPtx.Caption = 0 Else LBL_NbPtx.Caption = NbPtx End If If VideReel < 0 Then LBL_VideReel.Caption = 0 Else LBL_VideReel = VideReel End If Else LBL_VideReel.Caption = 0 LBL_NbPtx.Caption = 0 LBL_LongDePtx = 0 End If If IsNumeric(TXB_NbPtr.Value) And IsNumeric(TXB_LargPtx.Value) And IsNumeric(TXB_LongTot.Value) Then LBL_NbPtr1 = True VideTot = LongTot - LongDePtx If Len(VideReel) <= 5 Then If Mid(VideReel, 5) = 5 Or Len(VideReel) < 5 Then LgPtr1 = VideReel NbPtr1 = NbPtr LBL_Nb1 = NbPtr1 & " poutres de " & VideReel & " ml." LBL_Nb1.Visible = True LBL_Nb2.Visible = False Exit Sub End If Else NbPtr1 = 1 LgPtr1 = Round(VideReel - 0.005, 2) NbPtr2 = NbPtr - NbPtr1 LgPtr2 = Round(VideReel + 0.005, 2) VideTot1 = NbPtr1 * LgPtr1 VideTot2 = NbPtr2 * LgPtr2 VideTotTest = VideTot1 + VideTot2 While VideTotTest <> VideTot 'C'est ici que ça ne marche pas comme prévu MsgBox "hop" If NbPtr1 > 1000 Then MsgBox "erreur" LBL_Nb1.Visible = False LBL_Nb2.Visible = False Exit Sub End If NbPtr1 = NbPtr1 + 1 NbPtr2 = NbPtr - NbPtr1 VideTot1 = NbPtr1 * LgPtr1 VideTot2 = NbPtr2 * LgPtr2 Wend End If Else LBL_Nb1.Visible = False LBL_Nb2.Visible = False End If End Sub
Je ne sais pas pourquoi mais si j'ai par exemple VideTot1 = 5.23 ,VideTot2 = 10.48, VideTotTest = 15.71 et VideTot = 15.71. Et bien l'égalité VideTotTest = VideTot renvoit faux, et VideTotTest <> VideTot renvoit vrai 8O. Peux-etre n'ai je pas fait correctement quelque chose dans mon code.
Pourriez-vous m'aider svp ? Je galère :?
Merci à vous :)