Accueil > > > CALCULER UNE EXPRESSION MATHEMATIQUE
CALCULER UNE EXPRESSION MATHEMATIQUE
Information sur la source
Description
Permet de calculer une équation du type : 2*(V4*4²+(2*2))/8
Source
- Function Calcule(TheCalcul As String)
- Dim NewCalcul As String, ThePos As Long, Parenthese As String, CParenthese As String, NegPos As Long, NextPar As Long
- NewCalcul = Replace(TheCalcul, " ", "")
- NewCalcul = Replace(NewCalcul, ",", ".")
- NewCalcul = "0+" & NewCalcul & "+0"
- NewCalcul = UCase(NewCalcul)
-
- While InStrRev(1, NewCalcul, "(") <> Len(NewCalcul) 'Calcule les parenthèses
- ThePos = Len(NewCalcul) - InStrRev(1, NewCalcul, "(")
- NextPar = InStr(ThePos, NewCalcul, ")")
- Parenthese = Mid(NewCalcul, ThePos, NextPar - ThePos + 1)
- CParenthese = Calcule(Mid(Parenthese, 2, Len(Parenthese) - 2))
- NewCalcul = Mid(NewCalcul, 1, ThePos - 1) & CParenthese & Mid(NewCalcul, ThePos + Len(Parenthese), Len(NewCalcul) - (ThePos + Len(Parenthese)) + 1)
- Wend
-
- NewCalcul = Replace(NewCalcul, ",", ".")
-
- While InStr(1, NewCalcul, "²") <> 0 'Calcule les carrés
- ThePos = InStr(1, NewCalcul, "²")
- NewCalcul = Mid(NewCalcul, 1, Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) & Val(Mid(NewCalcul, 1 + Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul), ThePos - (Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) - 1)) ^ 2 & Mid(NewCalcul, ThePos + (GetSeparatorRev(ThePos + 1, NewCalcul) - ThePos))
- Wend
-
- NewCalcul = Replace(NewCalcul, ",", ".")
-
- While InStr(1, NewCalcul, "V") <> 0 'Calcule les racines carrés
- ThePos = InStr(1, NewCalcul, "V")
- NewCalcul = Mid(NewCalcul, 1, Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) & Sqr(Val(Mid(NewCalcul, ThePos + 1, GetSeparatorRev(ThePos + 1, NewCalcul) - ThePos - 1))) & Mid(NewCalcul, ThePos + (GetSeparatorRev(ThePos + 1, NewCalcul) - ThePos))
- Wend
-
- NewCalcul = Replace(NewCalcul, ",", ".")
-
- If InStr(1, NewCalcul, "*") < InStr(1, NewCalcul, "/") Then 'Calcule les multiplications et les divisions
- While InStr(1, NewCalcul, "*") <> 0
- ThePos = InStr(1, NewCalcul, "*")
- NewCalcul = Mid(NewCalcul, 1, Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) & (Val(Mid(NewCalcul, 1 + Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul), ThePos - (Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) - 1)) * Val(Mid(NewCalcul, ThePos + 1, GetSeparatorSP(ThePos + 1, NewCalcul) - ThePos - 1))) & Mid(NewCalcul, ThePos + (GetSeparatorSP(ThePos + 1, NewCalcul) - ThePos))
- Wend
-
- NewCalcul = Replace(NewCalcul, ",", ".")
-
- While InStr(1, NewCalcul, "/") <> 0
- ThePos = InStr(1, NewCalcul, "/")
- NewCalcul = Mid(NewCalcul, 1, Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) & (Val(Mid(NewCalcul, 1 + Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul), ThePos - (Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) - 1)) / Val(Mid(NewCalcul, ThePos + 1, GetSeparatorSP(ThePos + 1, NewCalcul) - ThePos - 1))) & Mid(NewCalcul, ThePos + (GetSeparatorSP(ThePos + 1, NewCalcul) - ThePos))
- Wend
- Else
- While InStr(1, NewCalcul, "/") <> 0
- ThePos = InStr(1, NewCalcul, "/")
- NewCalcul = Mid(NewCalcul, 1, Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) & (Val(Mid(NewCalcul, 1 + Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul), ThePos - (Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) - 1)) / Val(Mid(NewCalcul, ThePos + 1, GetSeparatorSP(ThePos + 1, NewCalcul) - ThePos - 1))) & Mid(NewCalcul, ThePos + (GetSeparatorSP(ThePos + 1, NewCalcul) - ThePos))
- Wend
-
- NewCalcul = Replace(NewCalcul, ",", ".")
-
- While InStr(1, NewCalcul, "*") <> 0
- ThePos = InStr(1, NewCalcul, "*")
- NewCalcul = Mid(NewCalcul, 1, Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) & (Val(Mid(NewCalcul, 1 + Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul), ThePos - (Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) - 1)) * Val(Mid(NewCalcul, ThePos + 1, GetSeparatorSP(ThePos + 1, NewCalcul) - ThePos - 1))) & Mid(NewCalcul, ThePos + (GetSeparatorSP(ThePos + 1, NewCalcul) - ThePos))
- Wend
- End If
-
- NewCalcul = Replace(NewCalcul, ",", ".")
-
- Calcule = Addition(NewCalcul) 'Additionne le tout
- End Function
-
- Function InStrRev(Start As Long, String1 As String, String2 As String)
- InStrRev = Len(String1)
- For i = 1 To Len(String1) - Start
- If Mid(String1, Len(String1) - Start - i + 1, Len(String2)) = String2 Then InStrRev = Start + i - 1: Exit Function
- Next i
- End Function
-
- Function GetSeparatorRev(Start As Long, TheString As String)
- Dim VAdd As Long, VDiv As Long, VMul As Long, VRac As Long, VSou As Long
-
- VAdd = InStr(Start, TheString, "+")
- VDiv = InStr(Start, TheString, "/")
- VMul = InStr(Start, TheString, "*")
- VRac = InStr(Start, TheString, "V")
- VSou = InStr(Start, TheString, "-")
-
- If VAdd = 0 Then
- VAdd = Len(TheString) + 1
- End If
- If VDiv = 0 Then
- VDiv = Len(TheString) + 1
- End If
- If VMul = 0 Then
- VMul = Len(TheString) + 1
- End If
- If VRac = 0 Then
- VRac = Len(TheString) + 1
- End If
- If VSou = 0 Then
- VSou = Len(TheString) + 1
- End If
-
- If VAdd < VDiv And VAdd < VMul And VAdd < VRac And VAdd < VSou Then
- GetSeparatorRev = VAdd
- ElseIf VDiv < VAdd And VDiv < VMul And VDiv < VRac And VDiv < VSou Then
- GetSeparatorRev = VDiv
- ElseIf VRac < VAdd And VRac < VMul And VRac < VDiv And VRac < VSou Then
- GetSeparatorRev = VRac
- ElseIf VSou < VAdd And VSou < VMul And VSou < VDiv And VSou < VRac Then
- GetSeparatorRev = VSou
- Else
- GetSeparatorRev = VMul
- End If
- End Function
- Function GetSeparatorSP(Start As Long, TheString As String)
- Dim VAdd As Long, VDiv As Long, VMul As Long, VRac As Long, VSou As Long
-
- VAdd = InStr(Start, TheString, "+")
- VDiv = InStr(Start, TheString, "/")
- VMul = InStr(Start, TheString, "*")
- VRac = InStr(Start, TheString, "V")
- VSou = InStr(Start, TheString, "-")
-
- If VAdd = 0 Then
- VAdd = Len(TheString) + 1
- End If
- If VDiv = 0 Then
- VDiv = Len(TheString) + 1
- End If
- If VMul = 0 Then
- VMul = Len(TheString) + 1
- End If
- If VRac = 0 Then
- VRac = Len(TheString) + 1
- End If
- If VSou - Start = 0 Or VSou = 0 Then
- VSou = Len(TheString) + 1
- End If
-
- If VAdd < VDiv And VAdd < VMul And VAdd < VRac And VAdd < VSou Then
- GetSeparatorSP = VAdd
- ElseIf VDiv < VAdd And VDiv < VMul And VDiv < VRac And VDiv < VSou Then
- GetSeparatorSP = VDiv
- ElseIf VRac < VAdd And VRac < VMul And VRac < VDiv And VRac < VSou Then
- GetSeparatorSP = VRac
- ElseIf VSou < VAdd And VSou < VMul And VSou < VDiv And VSou < VRac Then
- GetSeparatorSP = VSou
- Else
- GetSeparatorSP = VMul
- End If
-
-
- End Function
- Function GetSeparator(Start As Long, TheString As String)
- Dim VAdd As Long, VDiv As Long, VMul As Long, VRac As Long, VSou As Long
-
- VAdd = InStrRev(Start, TheString, "+")
- VDiv = InStrRev(Start, TheString, "/")
- VMul = InStrRev(Start, TheString, "*")
- VRac = InStrRev(Start, TheString, "V")
- VSou = InStrRev(Start, TheString, "-")
-
- If VAdd = 0 Then
- VAdd = Len(TheString) + 1
- End If
- If VDiv = 0 Then
- VDiv = Len(TheString) + 1
- End If
- If VMul = 0 Then
- VMul = Len(TheString) + 1
- End If
- If VRac = 0 Then
- VRac = Len(TheString) + 1
- End If
- If VSou = 0 Then
- VSou = Len(TheString) + 1
- End If
-
- If VAdd < VDiv And VAdd < VMul And VAdd < VRac And VAdd < VSou Then
- GetSeparator = VAdd
- ElseIf VDiv < VAdd And VDiv < VMul And VDiv < VRac And VDiv < VSou Then
- GetSeparator = VDiv
- ElseIf VRac < VAdd And VRac < VMul And VRac < VDiv And VRac < VSou Then
- GetSeparator = VRac
- ElseIf VSou < VAdd And VSou < VMul And VSou < VDiv And VSou < VRac Then
- GetSeparator = VSou
- Else
- GetSeparator = VMul
- End If
- End Function
-
- Public Function Replace(ByVal laChaine As String, ByVal old_car As String, ByVal new_car As String) As String
- Dim ncar As Integer, lng As Integer, result As String, txt As String
- lng = Len(old_car)
- txt = laChaine
- If lng <= 0 Then
- Replace = txt
- Exit Function
- End If
- On Error GoTo ErrChangeCaractre
-
- If lng <= 0 Or Len(Trim(txt)) <= 0 Then
- Replace = txt
- Exit Function
- End If
- result = vbNullString
- ncar = InStr(txt, old_car)
- Do While ncar
- If Len(result) > 0 Then
- If lng > 1 Then
- If ncar = 1 Then
- result = result & new_car
- Else
- result = result & Left(txt, ncar - 1) & new_car
- End If
- Else
- result = result & Left(txt, ncar - 1) & new_car
- End If
- Else
- result = Left(txt, ncar - 1) & new_car
- End If
- If lng > 1 Then
- txt = Right(txt, Len(txt) - ncar - (lng - 1))
- Else
- txt = Right(txt, Len(txt) - ncar)
- End If
- ncar = InStr(txt, old_car)
- Loop
- If Len(txt) > 0 Then result = result & txt
- Replace = result
- Exit Function
- ErrChangeCaractre:
- Replace = result
- End Function
-
- Function Addition(TheCalcule As String)
- Dim NextC, i As Long
- NextC = Val(Mid(TheCalcule, 1, GetSeparatorRev(1, TheCalcule)))
- TheCalcule = Replace(TheCalcule, "+-", "-")
- TheCalcule = Replace(TheCalcule, "--", "+")
- TheCalcule = Replace(TheCalcule, "++", "+")
- For i = 1 To Len(TheCalcule)
- If Mid(TheCalcule, i, 1) = "+" Then
- NextC = NextC + Val(Mid(TheCalcule, i + 1, Len(TheCalcule) - GetSeparatorRev(i, TheCalcule)))
- ElseIf Mid(TheCalcule, i, 1) = "-" Then
- NextC = NextC - Val(Mid(TheCalcule, i + 1, Len(TheCalcule) - GetSeparatorRev(i, TheCalcule)))
- End If
- Next i
- Addition = NextC
- End Function
-
Function Calcule(TheCalcul As String)
Dim NewCalcul As String, ThePos As Long, Parenthese As String, CParenthese As String, NegPos As Long, NextPar As Long
NewCalcul = Replace(TheCalcul, " ", "")
NewCalcul = Replace(NewCalcul, ",", ".")
NewCalcul = "0+" & NewCalcul & "+0"
NewCalcul = UCase(NewCalcul)
While InStrRev(1, NewCalcul, "(") <> Len(NewCalcul) 'Calcule les parenthèses
ThePos = Len(NewCalcul) - InStrRev(1, NewCalcul, "(")
NextPar = InStr(ThePos, NewCalcul, ")")
Parenthese = Mid(NewCalcul, ThePos, NextPar - ThePos + 1)
CParenthese = Calcule(Mid(Parenthese, 2, Len(Parenthese) - 2))
NewCalcul = Mid(NewCalcul, 1, ThePos - 1) & CParenthese & Mid(NewCalcul, ThePos + Len(Parenthese), Len(NewCalcul) - (ThePos + Len(Parenthese)) + 1)
Wend
NewCalcul = Replace(NewCalcul, ",", ".")
While InStr(1, NewCalcul, "²") <> 0 'Calcule les carrés
ThePos = InStr(1, NewCalcul, "²")
NewCalcul = Mid(NewCalcul, 1, Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) & Val(Mid(NewCalcul, 1 + Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul), ThePos - (Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) - 1)) ^ 2 & Mid(NewCalcul, ThePos + (GetSeparatorRev(ThePos + 1, NewCalcul) - ThePos))
Wend
NewCalcul = Replace(NewCalcul, ",", ".")
While InStr(1, NewCalcul, "V") <> 0 'Calcule les racines carrés
ThePos = InStr(1, NewCalcul, "V")
NewCalcul = Mid(NewCalcul, 1, Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) & Sqr(Val(Mid(NewCalcul, ThePos + 1, GetSeparatorRev(ThePos + 1, NewCalcul) - ThePos - 1))) & Mid(NewCalcul, ThePos + (GetSeparatorRev(ThePos + 1, NewCalcul) - ThePos))
Wend
NewCalcul = Replace(NewCalcul, ",", ".")
If InStr(1, NewCalcul, "*") < InStr(1, NewCalcul, "/") Then 'Calcule les multiplications et les divisions
While InStr(1, NewCalcul, "*") <> 0
ThePos = InStr(1, NewCalcul, "*")
NewCalcul = Mid(NewCalcul, 1, Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) & (Val(Mid(NewCalcul, 1 + Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul), ThePos - (Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) - 1)) * Val(Mid(NewCalcul, ThePos + 1, GetSeparatorSP(ThePos + 1, NewCalcul) - ThePos - 1))) & Mid(NewCalcul, ThePos + (GetSeparatorSP(ThePos + 1, NewCalcul) - ThePos))
Wend
NewCalcul = Replace(NewCalcul, ",", ".")
While InStr(1, NewCalcul, "/") <> 0
ThePos = InStr(1, NewCalcul, "/")
NewCalcul = Mid(NewCalcul, 1, Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) & (Val(Mid(NewCalcul, 1 + Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul), ThePos - (Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) - 1)) / Val(Mid(NewCalcul, ThePos + 1, GetSeparatorSP(ThePos + 1, NewCalcul) - ThePos - 1))) & Mid(NewCalcul, ThePos + (GetSeparatorSP(ThePos + 1, NewCalcul) - ThePos))
Wend
Else
While InStr(1, NewCalcul, "/") <> 0
ThePos = InStr(1, NewCalcul, "/")
NewCalcul = Mid(NewCalcul, 1, Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) & (Val(Mid(NewCalcul, 1 + Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul), ThePos - (Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) - 1)) / Val(Mid(NewCalcul, ThePos + 1, GetSeparatorSP(ThePos + 1, NewCalcul) - ThePos - 1))) & Mid(NewCalcul, ThePos + (GetSeparatorSP(ThePos + 1, NewCalcul) - ThePos))
Wend
NewCalcul = Replace(NewCalcul, ",", ".")
While InStr(1, NewCalcul, "*") <> 0
ThePos = InStr(1, NewCalcul, "*")
NewCalcul = Mid(NewCalcul, 1, Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) & (Val(Mid(NewCalcul, 1 + Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul), ThePos - (Len(NewCalcul) - GetSeparator(Len(NewCalcul) - ThePos + 1, NewCalcul)) - 1)) * Val(Mid(NewCalcul, ThePos + 1, GetSeparatorSP(ThePos + 1, NewCalcul) - ThePos - 1))) & Mid(NewCalcul, ThePos + (GetSeparatorSP(ThePos + 1, NewCalcul) - ThePos))
Wend
End If
NewCalcul = Replace(NewCalcul, ",", ".")
Calcule = Addition(NewCalcul) 'Additionne le tout
End Function
Function InStrRev(Start As Long, String1 As String, String2 As String)
InStrRev = Len(String1)
For i = 1 To Len(String1) - Start
If Mid(String1, Len(String1) - Start - i + 1, Len(String2)) = String2 Then InStrRev = Start + i - 1: Exit Function
Next i
End Function
Function GetSeparatorRev(Start As Long, TheString As String)
Dim VAdd As Long, VDiv As Long, VMul As Long, VRac As Long, VSou As Long
VAdd = InStr(Start, TheString, "+")
VDiv = InStr(Start, TheString, "/")
VMul = InStr(Start, TheString, "*")
VRac = InStr(Start, TheString, "V")
VSou = InStr(Start, TheString, "-")
If VAdd = 0 Then
VAdd = Len(TheString) + 1
End If
If VDiv = 0 Then
VDiv = Len(TheString) + 1
End If
If VMul = 0 Then
VMul = Len(TheString) + 1
End If
If VRac = 0 Then
VRac = Len(TheString) + 1
End If
If VSou = 0 Then
VSou = Len(TheString) + 1
End If
If VAdd < VDiv And VAdd < VMul And VAdd < VRac And VAdd < VSou Then
GetSeparatorRev = VAdd
ElseIf VDiv < VAdd And VDiv < VMul And VDiv < VRac And VDiv < VSou Then
GetSeparatorRev = VDiv
ElseIf VRac < VAdd And VRac < VMul And VRac < VDiv And VRac < VSou Then
GetSeparatorRev = VRac
ElseIf VSou < VAdd And VSou < VMul And VSou < VDiv And VSou < VRac Then
GetSeparatorRev = VSou
Else
GetSeparatorRev = VMul
End If
End Function
Function GetSeparatorSP(Start As Long, TheString As String)
Dim VAdd As Long, VDiv As Long, VMul As Long, VRac As Long, VSou As Long
VAdd = InStr(Start, TheString, "+")
VDiv = InStr(Start, TheString, "/")
VMul = InStr(Start, TheString, "*")
VRac = InStr(Start, TheString, "V")
VSou = InStr(Start, TheString, "-")
If VAdd = 0 Then
VAdd = Len(TheString) + 1
End If
If VDiv = 0 Then
VDiv = Len(TheString) + 1
End If
If VMul = 0 Then
VMul = Len(TheString) + 1
End If
If VRac = 0 Then
VRac = Len(TheString) + 1
End If
If VSou - Start = 0 Or VSou = 0 Then
VSou = Len(TheString) + 1
End If
If VAdd < VDiv And VAdd < VMul And VAdd < VRac And VAdd < VSou Then
GetSeparatorSP = VAdd
ElseIf VDiv < VAdd And VDiv < VMul And VDiv < VRac And VDiv < VSou Then
GetSeparatorSP = VDiv
ElseIf VRac < VAdd And VRac < VMul And VRac < VDiv And VRac < VSou Then
GetSeparatorSP = VRac
ElseIf VSou < VAdd And VSou < VMul And VSou < VDiv And VSou < VRac Then
GetSeparatorSP = VSou
Else
GetSeparatorSP = VMul
End If
End Function
Function GetSeparator(Start As Long, TheString As String)
Dim VAdd As Long, VDiv As Long, VMul As Long, VRac As Long, VSou As Long
VAdd = InStrRev(Start, TheString, "+")
VDiv = InStrRev(Start, TheString, "/")
VMul = InStrRev(Start, TheString, "*")
VRac = InStrRev(Start, TheString, "V")
VSou = InStrRev(Start, TheString, "-")
If VAdd = 0 Then
VAdd = Len(TheString) + 1
End If
If VDiv = 0 Then
VDiv = Len(TheString) + 1
End If
If VMul = 0 Then
VMul = Len(TheString) + 1
End If
If VRac = 0 Then
VRac = Len(TheString) + 1
End If
If VSou = 0 Then
VSou = Len(TheString) + 1
End If
If VAdd < VDiv And VAdd < VMul And VAdd < VRac And VAdd < VSou Then
GetSeparator = VAdd
ElseIf VDiv < VAdd And VDiv < VMul And VDiv < VRac And VDiv < VSou Then
GetSeparator = VDiv
ElseIf VRac < VAdd And VRac < VMul And VRac < VDiv And VRac < VSou Then
GetSeparator = VRac
ElseIf VSou < VAdd And VSou < VMul And VSou < VDiv And VSou < VRac Then
GetSeparator = VSou
Else
GetSeparator = VMul
End If
End Function
Public Function Replace(ByVal laChaine As String, ByVal old_car As String, ByVal new_car As String) As String
Dim ncar As Integer, lng As Integer, result As String, txt As String
lng = Len(old_car)
txt = laChaine
If lng <= 0 Then
Replace = txt
Exit Function
End If
On Error GoTo ErrChangeCaractre
If lng <= 0 Or Len(Trim(txt)) <= 0 Then
Replace = txt
Exit Function
End If
result = vbNullString
ncar = InStr(txt, old_car)
Do While ncar
If Len(result) > 0 Then
If lng > 1 Then
If ncar = 1 Then
result = result & new_car
Else
result = result & Left(txt, ncar - 1) & new_car
End If
Else
result = result & Left(txt, ncar - 1) & new_car
End If
Else
result = Left(txt, ncar - 1) & new_car
End If
If lng > 1 Then
txt = Right(txt, Len(txt) - ncar - (lng - 1))
Else
txt = Right(txt, Len(txt) - ncar)
End If
ncar = InStr(txt, old_car)
Loop
If Len(txt) > 0 Then result = result & txt
Replace = result
Exit Function
ErrChangeCaractre:
Replace = result
End Function
Function Addition(TheCalcule As String)
Dim NextC, i As Long
NextC = Val(Mid(TheCalcule, 1, GetSeparatorRev(1, TheCalcule)))
TheCalcule = Replace(TheCalcule, "+-", "-")
TheCalcule = Replace(TheCalcule, "--", "+")
TheCalcule = Replace(TheCalcule, "++", "+")
For i = 1 To Len(TheCalcule)
If Mid(TheCalcule, i, 1) = "+" Then
NextC = NextC + Val(Mid(TheCalcule, i + 1, Len(TheCalcule) - GetSeparatorRev(i, TheCalcule)))
ElseIf Mid(TheCalcule, i, 1) = "-" Then
NextC = NextC - Val(Mid(TheCalcule, i + 1, Len(TheCalcule) - GetSeparatorRev(i, TheCalcule)))
End If
Next i
Addition = NextC
End Function
Conclusion
Exemple : Calcule("2*(V16)") 'renvoie 8
V --> Racine Carré ² --> Carré * --> Multiplier / --> Diviser + --> Additioner - --> Soustraire ( --> Parenthèse
Mettez vos commentaire (il contient surement quelque bug, merci de me prevenir)...
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Je trouve pu un programme !!! De calcul et d'expression!!!!!!!! [ par ATH|500| ]
Voilà le programme que je cherche...Un programme qui traçait les lignes graphiques de différentes fontions comme Tan Sin Sin-1 etc. etc.. Mais je m'en
Pi mais comment on calcul Pi ??? [ par koubihack ]
c'est que l'on demande souvent à ceux qui font de l'informatique (plus précisement de la programmation) de calculer Pi avec 10 000 000 de virgules, pe
calcul de cpu [ par rerereda ]
Bonjour tout le monde,Je voudrais savoir s'il y a un programme qui permet de calculer et d'afficher en temps reel la charge CPU.Comment faire en CShar
calcul mathématique [ par breton53 ]
un peu d'aide pour débutantJe dois concevoir un programme: pour calculer le max, le min et la moy des valeurs stockées dans un tableau 1D (temp()) lo
Calculer la dérivée d'une courbe [ par violent_ken ]
Violent Ken bonjour.j'ai créé un programme pour tracer des courbes et leurs dérivée (première et seconde)==> <A HREF="/cod
Calculer le temps de calcul d'algorithmes mathématiques? [ par ZarathoustraQC ]
Bonjours,Je suis un jeune étudiant et j'aimerais savoir si il existe un moyen ou un programme pour calculer le temps que prend un processus pour accom
calcul dans un datagrid [ par the_daren ]
Bonjour,le probleme est que j'arrive a calculer sur une table entiere mais pas sur une partie car dans le load je peut choisir une annee et donc le da
calcul date et heure [ par dauphin70 ]
bonjour, je suis débutante sous vb6 et j'ai un problème pour calculer une duréeen fait à partir d'une date d'arrêt, d'une heure d'arrêt, une date de m
Calcul de distances... [ par DragonDo ]
Salut à tous,Quelqu'un sait-il comment calculer la distance entre deux points du globe en connaissant les coordonnées gps de ceux-ci. Dans la lancée,
Calcul trajet [ par Dede ]
Bonjour,Voila mon problème.Quel algo utiliser pour calculer un itinéraire de métro (par exemple). Le tout étant de ne pas réinventer la roue.Toutes le
|
Derniers Blogs
PRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGEPRéSENTATION DES API REST DE WINDOWS AZURE : LISTER LES COMPTES DE STORAGE par richardc
http://www.c2idotnet.com/articles/presentation-des-api-rest-de-windows-azure-lister-les-comptes-de-storage
Désolé pour "toto", mais c2i existait avant blogs.developpeur.org et c'est mon site "officiel" ;-) ...
Cliquez pour lire la suite de l'article par richardc [HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE)[HTML5] SLIDES ET DéMOS : AUTOUR DU W3C , NOUVEAUX STANDARDS ET WEB MOBILE (LILLE) par Gio
Très bonne après-midi passée lors cette conférence avec le W3C, organisée par L' Inria sur les nouveaux standards, ce Mardi 14 Février, on sent vraiment que çà bosse au W3C, et l'avenir est très très prometteur pour le HTML5, notamment ...
Cliquez pour lire la suite de l'article par Gio GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|