begin process at 2012 02 16 17:21:20
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths

 > CALCULER UNE EXPRESSION MATHEMATIQUE

CALCULER UNE EXPRESSION MATHEMATIQUE


 Information sur la source

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

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

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

Auteur : Warning

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
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)...


 Sources du même auteur

Source avec Zip Source avec une capture GESTION CARACTÈRE ÉTRANGÉ AINSI/UNICODE (RUSSES, CHINOIS, JA...
Source avec Zip GRAVITÉ/SATELLISATION ET REBOND (REGLES DE TRIGONOMÉTRIE ET ...
Source avec Zip Source avec une capture FORME D'UN FORMULAIRE(NOUVELLE MÉTHODE)-(SANS LES API 'REGIO...
Source avec Zip Source avec une capture TPE - EXE DISASSEMBLER / UN DÉSASSEMBLEUR DE PROGRAMME
Source avec Zip Source avec une capture TOOLBAR DEPLACABLE ET DETACHABLE DE LA FENETRE...

 Sources de la même categorie

Source avec Zip Source avec une capture CONVERTISSEUR HEXAVIGÉSIMAL par shaeks
Source avec Zip Source avec une capture Source .NET (Dotnet) CRYPTOGRAPHIE AFFINE par Tigrou66
Source avec Zip Source avec une capture SCANNER FLEX par lajouad
Source avec Zip EQUATIONSECONDDEGRÉ,MATH,DEGRÉ par shadkitenge
Source avec Zip Source .NET (Dotnet) SOMME DE CHIFFRES CONTENUE DANS UN NOMBRE par alpha5

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) CALCUL DE PI par alpha5
Source avec Zip CALCULATRICE INCORPORÉ DANS UN TEXTBOX par droze02
Source avec Zip Source avec une capture [USERCONTROL] CALCULATRICE EN LIGNE DE CODE AVEC SCRIPTCONTR... par MadM@tt
Source .NET (Dotnet) CALCUL DU CODE COULEUR D'UNE RESISTANCE par manureva10
Source avec Zip FAIRE LE CALCUL DANS UN DATAGRID par ktyafr

Commentaires et avis

Commentaire de charlax le 02/01/2003 12:31:12

Ouais franchement bravo

Commentaire de lyon2002 le 10/02/2003 02:00:39

bravo! pour le travail.

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

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

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

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

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,889 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales