Option Explicit
Dim a As Long
Dim b As Long
Dim c As Long
Dim d As Long
Private Sub Command1_Click()
Const PI As Single = 3.14159265358979
Dim e As Long
Dim f As Long
Dim g As Long
Dim p As Long
Dim q As Long
Dim k As Long
Dim x As Integer
Dim t As Integer
Dim s1 As Long
Dim s2 As Long
Dim s3 As Long
Dim s4 As Long
Dim s5 As Long
Dim s6 As Long
a = Val(Text1.Text)
b = Val(Text2.Text)
c = Val(Text3.Text)
d = Val(Text4.Text)
On Error Resume Next
e = b / (3 * a)
f = c / a
g = d / a
p = (-3 * (e ^ 2)) + f
q = (2 * (e ^ 3)) - (e * f) + g
k = ((4 * (p ^ 3)) / 27) + (q ^ 2)
If k < 0 Then
x = ((3 * q) / (2 * p)) * Sqr(-3 / p)
t = (1 / 3) * (Atn(-x / Sqr(-x * x + 1)) + 2 * Atn(1))
s1 = -e + Sqr(-4 * p / 3) * Cos(t)
s2 = -e + Sqr(-4 * p / 3) * Cos(t + 2 * PI / 3)
s3 = -e + Sqr(-4 * p / 3) * Cos(t + 4 * PI / 3)
Text1.Text = " Les trois solutions sont : " & s1 & " et " & s2 & " et " & s3
Text2.Text = " "
Text3.Text = " "
Text4.Text = " "
ElseIf k = 0 Then
s4 = -e - ((4 * q) ^ (1 / 3))
s5 = -e + ((q / 2) ^ (1 / 3))
Text1.Text = " Les deux solutions sont : " & s4 & " et " & s5
Text2.Text = " "
Text3.Text = " "
Text4.Text = " "
Else
s6 = -e + (((-q + Sqr(k)) / 2) ^ (1 / 3)) - (((q + Sqr(k)) / 2) ^ (1 / 3))
Text1.Text = " La solution est : " & s6
Text2.Text = " "
Text3.Text = " "
Text4.Text = " "
End If
End Sub
Private Sub Command2_Click()
Text1.Text = " "
Text2.Text = " "
Text3.Text = " "
Text4.Text = " "
Text1.SetFocus
End Sub