begin process at 2012 05 27 19:07:09
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Maths

 > ROUTINE DE CALCUL

ROUTINE DE CALCUL


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Maths Classé sous :calcul Niveau :Initié Date de création :17/10/2001 Date de mise à jour :19/10/2001 00:00:00 Vu :5 205

Auteur : Johjo

Ecrire un message privé
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

Bon, j'ai déjà écrit une routine de calcul. Celle là, c'est une nouvelle version, que je pense plus simple et plus courte. Bien sûr, il y a toujours des choses à ajouter.

Source

  • Public Function InstrInv(Depart As Integer, Chaine1 As String, Chaine2 As String) As Integer
  • Dim No As Integer
  • For No = Depart To Len(Chaine2) + 1 Step -1
  • If Mid(Chaine1, No - Len(Chaine2), Len(Chaine2)) = Chaine2 Then
  • InstrInv = No - Len(Chaine2)
  • Exit Function
  • End If
  • Next No
  • InstrInv = 0
  • End Function
  • Public Function Valeur(Data As String) As String
  • Dim Op(5) As String
  • Dim NbOp As Integer
  • Op(0) = "^"
  • Op(1) = "/"
  • Op(2) = "*"
  • Op(3) = "+"
  • Op(4) = "ET"
  • Op(5) = "OU"
  • NbOp = 5 'Si on rajoute un opérateur, changer la variable
  • Dim Fonc(5) As String
  • Dim NbFonc As Integer
  • Fonc(0) = "SIN("
  • Fonc(1) = "COS("
  • Fonc(2) = "TAN("
  • Fonc(3) = "ABS("
  • NbFonc = 3 'Si on ajoute des fonctions, changer la variable
  • Dim Debut, Fin As Integer
  • 'ReDim Preserve Variable(10) As Variables
  • Dim Bcl1, Bcl2, Bcl3, Bcl4 As Integer
  • Dim Nbr1, Nbr2 As Integer
  • Dim NbrParO, NbrParF As Integer
  • Data = UCase(Data)
  • If InStr(1, Data, "ERREUR") <> 0 Then
  • Valeur = "ERREUR"
  • Exit Function
  • End If
  • '***********Calcul des Parentheses**************************
  • GoSub VerifPar
  • GoTo CalcFonc
  • VerifPar:
  • NbrParO = 0
  • NbrParF = 0
  • Bcl1 = 0
  • If InStr(1, Data, "(") > 0 And InStr(Bcl1 + 1, Data, ")") = 0 Then
  • Valeur = "ERREUR"
  • MsgBox "Erreur dans le nombre de parenthéses" + vbCrLf + "Verifiez qu'il n'y a pas d'espace mal positionnés", , "Erreur"
  • Exit Function
  • End If
  • Do
  • 'Selectionne la parenthese suivante et la compte
  • If InStr(Bcl1 + 1, Data, "(") < InStr(Bcl1 + 1, Data, ")") And InStr(Bcl1 + 1, Data, "(") > 0 Then
  • NbrParO = NbrParO + 1
  • Bcl1 = InStr(Bcl1 + 1, Data, "(")
  • ElseIf InStr(Bcl1 + 1, Data, ")") > 0 Then
  • NbrParF = NbrParF + 1
  • Bcl1 = InStr(Bcl1 + 1, Data, ")")
  • Else
  • Bcl1 = 0
  • End If
  • 'Test si il y a des erreurs dans le placement des parentheses
  • If NbrParO - NbrParF < 0 Then
  • Valeur = "ERREUR"
  • MsgBox "Erreur dans le placement des parenthéses", , "Erreur"
  • Exit Function
  • End If
  • Loop Until Bcl1 = 0
  • 'test si il y a des erreurs dans le nombre de parentheses
  • If NbrParO - NbrParF <> 0 Then
  • Valeur = "ERREUR"
  • MsgBox "Erreur dans le nombre de parenthéses" + vbCrLf + "Verifiez qu'il n'y a pas d'espace mal positionnés", , "Erreur"
  • Exit Function
  • End If
  • Return
  • '**********************Calcul des fonctions****
  • CalcFonc:
  • For Bcl1 = 0 To NbFonc
  • Bcl2 = 0
  • Do Until InStr(Bcl2 + 1, Data, Fonc(Bcl1)) = 0
  • Bcl2 = InStr(Bcl2 + 1, Data, Fonc(Bcl1))
  • Debut = InStr(Bcl2 + 1, Data, "(") - 1
  • Nbr1 = 0
  • Nbr2 = 0
  • Bcl3 = 0
  • Do
  • If InStr(Bcl3 + 1, Data, "(") < InStr(Bcl3 + 1, Data, ")") And InStr(Bcl3 + 1, Data, "(") > 0 Then
  • Nbr1 = Nbr1 + 1
  • Bcl3 = InStr(Bcl3 + 1, Data, "(")
  • ElseIf InStr(Bcl3 + 1, Data, ")") > 0 Then
  • Nbr2 = Nbr2 + 1
  • Bcl3 = InStr(Bcl3 + 1, Data, ")")
  • Else
  • Bcl3 = 0
  • End If
  • Loop Until Nbr1 - Nbr2 = 0
  • ' Do Until InStr(Bcl3 + 1, Data, "(") > InStr(Bcl3 + 1, Data, ")") Or InStr(Bcl3 + 1, Data, "(") = 0
  • ' Nbr1 = Nbr1 + 1
  • ' Bcl3 = InStr(Bcl3 + 1, Data, "(")
  • ' Loop
  • Fin = Debut
  • Debut = Debut + 1
  • For Bcl4 = 1 To Nbr1
  • Fin = InStr(Fin + 1, Data, ")")
  • Next Bcl4
  • 'Fin = InStr(Fin, Data, ")")
  • Select Case Fonc(Bcl1)
  • Case "SIN(": Data = Left(Data, Debut - Len(Fonc(Bcl1))) + Str(Sin(Val(Valeur(Mid(Data, Debut + 1, Fin - Debut - 1))))) + Right(Data, Len(Data) - Fin) 'Effectue le calcul entre parenthese
  • Case "COS(": Data = Left(Data, Debut - Len(Fonc(Bcl1))) + Str(Cos(Val(Valeur(Mid(Data, Debut + 1, Fin - Debut - 1))))) + Right(Data, Len(Data) - Fin) 'Effectue le calcul entre parenthese
  • Case "TAN(": Data = Left(Data, Debut - Len(Fonc(Bcl1))) + Str(Tan(Val(Valeur(Mid(Data, Debut + 1, Fin - Debut - 1))))) + Right(Data, Len(Data) - Fin) 'Effectue le calcul entre parenthese
  • Case "ABS(": Data = Left(Data, Debut - Len(Fonc(Bcl1))) + Str(Abs(Val(Valeur(Mid(Data, Debut + 1, Fin - Debut - 1))))) + Right(Data, Len(Data) - Fin) 'Effectue le calcul entre parenthese
  • End Select
  • Loop
  • 'Data = Valeur(Data) 'effectue le calcul final quand il n'y a plus de parenthese
  • Next Bcl1
  • GoSub VerifPar
  • '**********************Modification à faire à la chaine****
  • 'liste exhaustive
  • Dim Stg1 As String
  • Stg1 = "(*+/^-"
  • 'recherche des doubles --
  • Bcl1 = 0
  • Do Until InStr(Bcl1 + 1, Data, "--") = 0
  • Bcl1 = InStr(Bcl1 + 1, Data, "--")
  • Data = Left(Data, Bcl1 - 1) + "+" + Mid(Data, Bcl1 + 2, Len(Data) - Bcl1 - 1)
  • Loop
  • 'Recherche du signe - dans la donnée
  • Bcl1 = 0
  • Do Until InStr(Bcl1 + 1, Data, "-") = 0
  • Bcl1 = InStr(Bcl1 + 1, Data, "-")
  • If Bcl1 <> 1 Then
  • 'remplace si presence d'un - sans operateur devant
  • If InStr(1, Stg1, Mid(Data, Bcl1 - 1, 1)) = 0 Then Data = Left(Data, Bcl1 - 1) + "+-" + Mid(Data, Bcl1 + 1, Len(Data) - Bcl1)
  • End If
  • Loop
  • 'Recherche du ( dans la donnée
  • Stg1 = "*+-/"
  • Bcl1 = 0
  • Do Until InStr(Bcl1 + 1, Data, "(") = 0
  • Bcl1 = InStr(Bcl1 + 1, Data, "(")
  • If Bcl1 <> 1 Then
  • 'remplace si presence d'un ( sans operateur devant
  • If InStr(1, Stg1, Mid(Data, Bcl1 - 1, 1)) = 0 Then Data = Left(Data, Bcl1 - 1) + "*(" + Mid(Data, Bcl1 + 1, Len(Data) - Bcl1)
  • End If
  • Loop
  • 'Recherche du ) dans la donnée
  • Stg1 = "*+-/"
  • Bcl1 = 0
  • Do Until InStr(Bcl1 + 1, Data, ")") = 0
  • Bcl1 = InStr(Bcl1 + 1, Data, ")")
  • If Bcl1 <> 1 Then
  • 'remplace si presence dun - sans operateur devant
  • If InStr(1, Stg1, Mid(Data, Bcl1 + 1, 1)) = 0 Then Data = Left(Data, Bcl1 - 1) + ")*" + Mid(Data, Bcl1 + 1, Len(Data) - Bcl1)
  • End If
  • Loop
  • '**********************Calcul******************************
  • Select Case NbrParO
  • '**************Parenthèses*************************
  • Case Is > 0:
  • Do
  • Fin = InStr(1, Data, ")") 'Cherche la 1ere parenthese fermé
  • Debut = InstrInv(Fin, Data, "(") 'Cherche la parenthese ouverte correspondant à la parenthese fermé
  • Data = Left(Data, Debut - 1) + Valeur(Mid(Data, Debut + 1, Fin - Debut - 1)) + Right(Data, Len(Data) - Fin) 'Effectue le calcul entre parenthese
  • Loop Until InStr(1, Data, "(") = 0
  • Data = Valeur(Data) 'effectue le calcul final quand il n'y a plus de parenthese
  • '***********Sans parenthèses************************
  • Case Is = 0:
  • Dim Nbr(2) As String
  • Dim Pos As Integer
  • For Bcl1 = 0 To NbOp
  • Do Until InStr(1, Data, Op(Bcl1)) = 0
  • '****Definition du premier terme****
  • Pos = InStr(1, Data, Op(Bcl1))
  • Debut = 1
  • For Bcl2 = 0 To NbOp
  • If InstrInv(Pos, Data, Op(Bcl2)) > Debut Then Debut = InstrInv(Pos, Data, Op(Bcl2)) + Len(Op(Bcl2))
  • Next Bcl2
  • If InStr(1, Data, Op(Bcl1)) - Debut = 0 Then
  • Nbr(1) = "0"
  • Else
  • Nbr(1) = Mid(Data, Debut, Pos - Debut)
  • End If
  • '****Definition du deuxieme terme****
  • Fin = Len(Data)
  • For Bcl2 = 0 To NbOp
  • If InStr(Pos + 1, Data, Op(Bcl2)) < Fin And InStr(Pos + 1, Data, Op(Bcl2)) > 0 Then Fin = InStr(Pos + 1, Data, Op(Bcl2)) - 1
  • Next Bcl2
  • If InStr(1, Data, Op(Bcl1)) - Fin = 0 Then
  • Valeur = "ERREUR"
  • Exit Function
  • End If
  • Nbr(2) = Mid(Data, Pos + Len(Op(Bcl1)), Fin + 1 - (Pos + Len(Op(Bcl1))))
  • '*****Calcul************************
  • Select Case Op(Bcl1)
  • Case "ET": Data = Left(Data, Debut - 1) + Trim(Str(Val(Nbr(1)) And Val(Nbr(2)))) + Right(Data, Len(Data) - Fin)
  • Case "OU": Data = Left(Data, Debut - 1) + Trim(Str(Val(Nbr(1)) Or Val(Nbr(2)))) + Right(Data, Len(Data) - Fin)
  • Case "^": Data = Left(Data, Debut - 1) + Trim(Str(Val(Nbr(1)) ^ Val(Nbr(2)))) + Right(Data, Len(Data) - Fin)
  • Case "/": Data = Left(Data, Debut - 1) + Trim(Str(Val(Nbr(1)) / Val(Nbr(2)))) + Right(Data, Len(Data) - Fin)
  • Case "*": Data = Left(Data, Debut - 1) + Trim(Str(Val(Nbr(1)) * Val(Nbr(2)))) + Right(Data, Len(Data) - Fin)
  • Case "+": Data = Left(Data, Debut - 1) + Trim(Str(Val(Nbr(1)) + Val(Nbr(2)))) + Right(Data, Len(Data) - Fin)
  • End Select
  • Loop
  • Next Bcl1
  • End Select
  • Valeur = Data
  • End Function
Public Function InstrInv(Depart As Integer, Chaine1 As String, Chaine2 As String) As Integer
Dim No As Integer

For No = Depart To Len(Chaine2) + 1 Step -1
    If Mid(Chaine1, No - Len(Chaine2), Len(Chaine2)) = Chaine2 Then
        InstrInv = No - Len(Chaine2)
        Exit Function
    End If
Next No
InstrInv = 0
End Function



Public Function Valeur(Data As String) As String
Dim Op(5) As String
Dim NbOp As Integer
    Op(0) = "^"
    Op(1) = "/"
    Op(2) = "*"
    Op(3) = "+"
    Op(4) = "ET"
    Op(5) = "OU"
    NbOp = 5        'Si on rajoute un opérateur, changer la variable
    
Dim Fonc(5) As String
Dim NbFonc As Integer
    Fonc(0) = "SIN("
    Fonc(1) = "COS("
    Fonc(2) = "TAN("
    Fonc(3) = "ABS("
    NbFonc = 3       'Si on ajoute des fonctions, changer la variable
Dim Debut, Fin As Integer
    
    'ReDim Preserve Variable(10) As Variables
    Dim Bcl1, Bcl2, Bcl3, Bcl4 As Integer
    Dim Nbr1, Nbr2 As Integer
    Dim NbrParO, NbrParF As Integer

Data = UCase(Data)
    If InStr(1, Data, "ERREUR") <> 0 Then
        Valeur = "ERREUR"
        Exit Function
    End If

'***********Calcul des Parentheses**************************
GoSub VerifPar
GoTo CalcFonc
VerifPar:
    NbrParO = 0
    NbrParF = 0
    Bcl1 = 0
        
        If InStr(1, Data, "(") > 0 And InStr(Bcl1 + 1, Data, ")") = 0 Then
            Valeur = "ERREUR"
            MsgBox "Erreur dans le nombre de parenthéses" + vbCrLf + "Verifiez qu'il n'y a pas d'espace mal positionnés", , "Erreur"
            Exit Function
        End If
    
        Do
            'Selectionne la parenthese suivante et la compte
            If InStr(Bcl1 + 1, Data, "(") < InStr(Bcl1 + 1, Data, ")") And InStr(Bcl1 + 1, Data, "(") > 0 Then
                NbrParO = NbrParO + 1
                Bcl1 = InStr(Bcl1 + 1, Data, "(")
            ElseIf InStr(Bcl1 + 1, Data, ")") > 0 Then
                NbrParF = NbrParF + 1
                Bcl1 = InStr(Bcl1 + 1, Data, ")")
            Else
                Bcl1 = 0
            End If

            'Test si il y a des erreurs dans le placement des parentheses
            If NbrParO - NbrParF < 0 Then
                Valeur = "ERREUR"
                MsgBox "Erreur dans le placement des parenthéses", , "Erreur"
                Exit Function
            End If
        Loop Until Bcl1 = 0
        
            'test si il y a des erreurs dans le nombre de parentheses
        If NbrParO - NbrParF <> 0 Then
            Valeur = "ERREUR"
            MsgBox "Erreur dans le nombre de parenthéses" + vbCrLf + "Verifiez qu'il n'y a pas d'espace mal positionnés", , "Erreur"
            Exit Function
        End If
Return

'**********************Calcul des fonctions****
CalcFonc:
For Bcl1 = 0 To NbFonc
    Bcl2 = 0
    
    Do Until InStr(Bcl2 + 1, Data, Fonc(Bcl1)) = 0
        Bcl2 = InStr(Bcl2 + 1, Data, Fonc(Bcl1))
        Debut = InStr(Bcl2 + 1, Data, "(") - 1
        Nbr1 = 0
        Nbr2 = 0
        Bcl3 = 0
        
        Do
            If InStr(Bcl3 + 1, Data, "(") < InStr(Bcl3 + 1, Data, ")") And InStr(Bcl3 + 1, Data, "(") > 0 Then
                Nbr1 = Nbr1 + 1
                Bcl3 = InStr(Bcl3 + 1, Data, "(")
            ElseIf InStr(Bcl3 + 1, Data, ")") > 0 Then
                Nbr2 = Nbr2 + 1
                Bcl3 = InStr(Bcl3 + 1, Data, ")")
            Else
                Bcl3 = 0
            End If
        Loop Until Nbr1 - Nbr2 = 0
        
        
        
        
        
'        Do Until InStr(Bcl3 + 1, Data, "(") > InStr(Bcl3 + 1, Data, ")") Or InStr(Bcl3 + 1, Data, "(") = 0
'            Nbr1 = Nbr1 + 1
'            Bcl3 = InStr(Bcl3 + 1, Data, "(")
'        Loop
                        
            
            Fin = Debut
            Debut = Debut + 1
            For Bcl4 = 1 To Nbr1
                Fin = InStr(Fin + 1, Data, ")")
            Next Bcl4
            'Fin = InStr(Fin, Data, ")")
            Select Case Fonc(Bcl1)
                Case "SIN(": Data = Left(Data, Debut - Len(Fonc(Bcl1))) + Str(Sin(Val(Valeur(Mid(Data, Debut + 1, Fin - Debut - 1))))) + Right(Data, Len(Data) - Fin) 'Effectue le calcul entre parenthese
                Case "COS(": Data = Left(Data, Debut - Len(Fonc(Bcl1))) + Str(Cos(Val(Valeur(Mid(Data, Debut + 1, Fin - Debut - 1))))) + Right(Data, Len(Data) - Fin) 'Effectue le calcul entre parenthese
                Case "TAN(": Data = Left(Data, Debut - Len(Fonc(Bcl1))) + Str(Tan(Val(Valeur(Mid(Data, Debut + 1, Fin - Debut - 1))))) + Right(Data, Len(Data) - Fin) 'Effectue le calcul entre parenthese
                Case "ABS(": Data = Left(Data, Debut - Len(Fonc(Bcl1))) + Str(Abs(Val(Valeur(Mid(Data, Debut + 1, Fin - Debut - 1))))) + Right(Data, Len(Data) - Fin) 'Effectue le calcul entre parenthese
            End Select
    Loop
        'Data = Valeur(Data) 'effectue le calcul final quand il n'y a plus de parenthese
Next Bcl1
    GoSub VerifPar

'**********************Modification à faire à la chaine****
'liste exhaustive
Dim Stg1 As String
Stg1 = "(*+/^-"
    
'recherche des doubles --
    Bcl1 = 0
    Do Until InStr(Bcl1 + 1, Data, "--") = 0
        Bcl1 = InStr(Bcl1 + 1, Data, "--")
                Data = Left(Data, Bcl1 - 1) + "+" + Mid(Data, Bcl1 + 2, Len(Data) - Bcl1 - 1)
    Loop

'Recherche du signe - dans la donnée
    Bcl1 = 0
    Do Until InStr(Bcl1 + 1, Data, "-") = 0
        Bcl1 = InStr(Bcl1 + 1, Data, "-")
        If Bcl1 <> 1 Then
                'remplace si presence d'un - sans operateur devant
            If InStr(1, Stg1, Mid(Data, Bcl1 - 1, 1)) = 0 Then Data = Left(Data, Bcl1 - 1) + "+-" + Mid(Data, Bcl1 + 1, Len(Data) - Bcl1)
        End If
    Loop

'Recherche du ( dans la donnée
    Stg1 = "*+-/"
    Bcl1 = 0
    Do Until InStr(Bcl1 + 1, Data, "(") = 0
        Bcl1 = InStr(Bcl1 + 1, Data, "(")
        If Bcl1 <> 1 Then
                'remplace si presence d'un ( sans operateur devant
            If InStr(1, Stg1, Mid(Data, Bcl1 - 1, 1)) = 0 Then Data = Left(Data, Bcl1 - 1) + "*(" + Mid(Data, Bcl1 + 1, Len(Data) - Bcl1)
        End If
    Loop

'Recherche du ) dans la donnée
    Stg1 = "*+-/"
    Bcl1 = 0
    Do Until InStr(Bcl1 + 1, Data, ")") = 0
        Bcl1 = InStr(Bcl1 + 1, Data, ")")
        If Bcl1 <> 1 Then
                'remplace si presence dun - sans operateur devant
            If InStr(1, Stg1, Mid(Data, Bcl1 + 1, 1)) = 0 Then Data = Left(Data, Bcl1 - 1) + ")*" + Mid(Data, Bcl1 + 1, Len(Data) - Bcl1)
        End If
    Loop


'**********************Calcul******************************
    Select Case NbrParO
        '**************Parenthèses*************************
        Case Is > 0:
            Do
            Fin = InStr(1, Data, ")")       'Cherche la 1ere parenthese fermé
            Debut = InstrInv(Fin, Data, "(") 'Cherche la parenthese ouverte correspondant à la parenthese fermé
            Data = Left(Data, Debut - 1) + Valeur(Mid(Data, Debut + 1, Fin - Debut - 1)) + Right(Data, Len(Data) - Fin)  'Effectue le calcul entre parenthese
            Loop Until InStr(1, Data, "(") = 0
    
            Data = Valeur(Data) 'effectue le calcul final quand il n'y a plus de parenthese
    
        
        
        '***********Sans parenthèses************************
        Case Is = 0:
            Dim Nbr(2) As String
            Dim Pos As Integer
            
            
            For Bcl1 = 0 To NbOp
                
                
                Do Until InStr(1, Data, Op(Bcl1)) = 0
                    
                    
                    '****Definition du premier terme****
                    Pos = InStr(1, Data, Op(Bcl1))
                    Debut = 1
                    For Bcl2 = 0 To NbOp
                        If InstrInv(Pos, Data, Op(Bcl2)) > Debut Then Debut = InstrInv(Pos, Data, Op(Bcl2)) + Len(Op(Bcl2))
                    Next Bcl2
                
                                        If InStr(1, Data, Op(Bcl1)) - Debut = 0 Then
                        Nbr(1) = "0"
                    Else
                        Nbr(1) = Mid(Data, Debut, Pos - Debut)
                    End If
                    
                    '****Definition du deuxieme terme****
                    Fin = Len(Data)
                    For Bcl2 = 0 To NbOp
                        If InStr(Pos + 1, Data, Op(Bcl2)) < Fin And InStr(Pos + 1, Data, Op(Bcl2)) > 0 Then Fin = InStr(Pos + 1, Data, Op(Bcl2)) - 1
                    Next Bcl2
                    If InStr(1, Data, Op(Bcl1)) - Fin = 0 Then
                        Valeur = "ERREUR"
                        Exit Function
                    End If
                
                    Nbr(2) = Mid(Data, Pos + Len(Op(Bcl1)), Fin + 1 - (Pos + Len(Op(Bcl1))))
                    '*****Calcul************************
                    Select Case Op(Bcl1)
                        Case "ET": Data = Left(Data, Debut - 1) + Trim(Str(Val(Nbr(1)) And Val(Nbr(2)))) + Right(Data, Len(Data) - Fin)
                        Case "OU": Data = Left(Data, Debut - 1) + Trim(Str(Val(Nbr(1)) Or Val(Nbr(2)))) + Right(Data, Len(Data) - Fin)
                        Case "^": Data = Left(Data, Debut - 1) + Trim(Str(Val(Nbr(1)) ^ Val(Nbr(2)))) + Right(Data, Len(Data) - Fin)
                        Case "/": Data = Left(Data, Debut - 1) + Trim(Str(Val(Nbr(1)) / Val(Nbr(2)))) + Right(Data, Len(Data) - Fin)
                        Case "*": Data = Left(Data, Debut - 1) + Trim(Str(Val(Nbr(1)) * Val(Nbr(2)))) + Right(Data, Len(Data) - Fin)
                        Case "+": Data = Left(Data, Debut - 1) + Trim(Str(Val(Nbr(1)) + Val(Nbr(2)))) + Right(Data, Len(Data) - Fin)
                    End Select
                Loop
            Next Bcl1
    End Select
    Valeur = Data

End Function

   

 Conclusion

Vous appelez la fonction Valeur en donnant à la variable Data la valeur d'une chaine de caractere correspondant à un calcul. Ne pas mettre de signe "=". La fonction Valeur renvoie le résultat sous la forme d'une chaine de caractere.
ex: "1+1" renvoie "2"

Il gere les parentheses, on peut en mettre tant qu'on veut, il gere les 4 opérateurs + - * /.
Il respecte les priorités
Il gere les fonctions SIN COS TAN, seulement si l'on s'en sert avec des parentheses
ex SIN(5)
Pour le reste, voyez le programme, il y a quelque commentaire.
ex de fonctionnement pour ceux qui ne savent pas se servir :
Dim Var1 as string
Var1= Valeur("UN calcul, n'importe lequel") 'Placer une chaine de caractere.

Maintenant, si parmis vous il y en a qui sont tentés, est-ce qu'ils peuvent m'améliorer cette routine, me la simplifier, la completer, la debugger(je ne crois pas qu'il y ait des erreurs)
et m'envoyer ça à
Laurent.jo@Wanadoo.fr
Vous seriez trop cool.


 Sources du même auteur

NURMITE (ODORAT)
Source avec Zip SOLITAIRE
Source avec Zip ENREGISTREMENT ET SIMULATION DES CLIQUES DE SOURIS

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) PERMUTATIONS DE CARACTÈRES par alpha5
Source avec Zip Source avec une capture PARTICIPATION À L'APPRENTISSAGE DE LECTURE DE L'HEURE (PENDU... par oulipan
Source avec Zip Source avec une capture TECHNIQUE TRADITIONNELLE DE LA DIVISION par oulipan
Source avec Zip Source avec une capture ENTRAÎNEMENT POUR EFFECTUER DES MULTIPLICATIONS EN COLONNES ... par oulipan
Source avec Zip Source avec une capture CONVERTISSEUR HEXAVIGÉSIMAL par shaeks

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture CALCUL DE PLACEMENT OU DE PRET - MENSUALITES - MONTANT - D... par lexsty
Source avec Zip Source .NET (Dotnet) NOMBRES PRIMORDIAUX par alpha5
Source avec Zip Source avec une capture SUDOKU SOLVEUR CRIBLE par ccgousset
Source avec Zip Source avec une capture Source .NET (Dotnet) CALCUL DE RÉSISTANCE par Jeromedu79
Source avec Zip Source avec une capture Source .NET (Dotnet) CALCULS DE DATES À PARTIR D'UN CALENDRIER par jcbouli

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

calcul des jours fériés [ par fred ] Je cherche un source sur le calcul des jours fériés. En entree on a une date et on doit savoir en sortie si c'est un jour ferie ou pas.J'attends votre Calcul binaire [ par kequo ] peut on faire du calcul binaire avec VB? si oui comment Pb de calcul [ par thomas ] Salut,Je fais en ce moment un petit programme sous VB qui me permet de saisir un calcul dans une zone de saisie (text1), par exemple "8+9*36" et je vo Pb de calcul [ par thomas ] Salut,Je fais en ce moment un petit programme sous VB qui me permet de saisir un calcul dans une zone de saisie (text1), par exemple "8+9*36" et je vo Calcul de chiffres à virgule [ par WareG ] Je doit calculer des sommes à virgule, mais le probleme est le suivant, lorsque je fais la somme par le code suivant j'ai un nombre à virgule beaucoup calcul a virgule [ par WareG ] J'ai bien reç votre code pour le calcul de chiffre à virguleDim Var1, Var2 As SingleVar1 = Text1.TextVar2 = Text2.TextText2.Text = (Int((Var1 + Var2) CALCUL FORMEL [ par mr_schmit ] Bonjour,Je cherche à dévelloper un prog en VB qui fasse du calcul formel, càd calcul avec des lettres.Si qqun à une idée... @+ Cadre d'objet indépt, feuille de calcul excel [ par Julie ] En vba, comment insérer des données issues de requête dans une feuille de calcul excel créée dans un formulaire(avec l'outil: cadre d'objet indépendan Calcul du debit recu et envoyer [ par pirjo ] Bonjour,Je de dois faire une applic qui doit gerer et detecter la connection.Je voudrais savoir comment calculer,par le biais du modem, le débit recu Calcul simple de crédit [ par cgelle ] Je cherche un petit logiciel en vbscript pour effectuer une mini simulation de crédit .Qui peut m'aider ?Merci<td


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,608 sec (3)

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