Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

CALCULER UNE EXPRESSION MATHEMATIQUE


Information sur la source

Catégorie :Maths Classé sous : calcul, calculer, equation, expression, mathematique Niveau : Expert Date de création : 29/04/2001 Vu : 8 835

Note :
7,86 / 10 - par 29 personnes
7,86 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note


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 --&gt; Racine Carré
² --&gt; Carré
* --&gt; Multiplier
/ --&gt; Diviser
+ --&gt; Additioner
- --&gt; Soustraire
( --&gt; Parenthèse

Mettez vos commentaire (il contient surement quelque bug, merci de me prevenir)...

 

Commentaires et avis

signaler à un administrateur
Commentaire de charlax le 02/01/2003 12:31:12

Ouais franchement bravo

signaler à un administrateur
Commentaire de lyon2002 le 10/02/2003 02:00:39

bravo! pour le travail.

signaler à un administrateur
Commentaire de titou2002 le 08/10/2003 15:24:17

pas mal lol et je pense ke bcp de collegiens vont s'en servir
je vojulais faire un truc comme ca aussi (lol c'est pareil pour tout les 3eme lol) mais ki donnerai les details des calculs (demander dans les exos) et avec plus de fonction, je partirai peut etre de ta source lol
vu ke je suis encore un newbie en prog ca va me prendre du temps lol

signaler à un administrateur
Commentaire de Warning le 09/10/2003 17:45:17 administrateur CS

bah en fait c plus simple que ça en a l'air :D ...

refléchie bien

bon le seul pb c avec les fractions... elle sont directment transformée...

bye, Warning

signaler à un administrateur
Commentaire de titou2002 le 09/10/2003 18:21:06

ouais il fo une recherche et une ecriture de la smplification pour les fraction
m'engin ya ka faire le pgcd (avec une fonction) et puis ca va tout seul
fo ke je voi lol

signaler à un administrateur
Commentaire de bigbourin le 10/06/2004 00:00:48

Houa !!!!!!!!!!
T'es vrémen un boss elle est exelente cette fonction.
sa fait un baille qu'elle est sur vb et je l'avais pas vu.
vrément bien merci.
10 / 10

bonne prog

Ajouter un commentaire

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&#233;&#233; un programme pour tracer des courbes et leurs d&#233;riv&#233;e (premi&#232;re et seconde)==&gt; <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


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version


HTC Magic

Entre 429€ et 429€


Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,437 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.