Edition 2: du 27/03/08Voici un petit jeu mathématique récréatif encore non finalisé:
Je sollicite donc votre aide pour créer une fonction VBA personnalisée
pour calculer des expressions (String) avec les opérateurs
+,-,*,/ et autres ...
Ex: Dans une cellule (A6), on a:=H6&I6&J6&K6&L6&M6&N6, ce qui affiche: ((0!)+(0!)+(0!))!
la fonction devrait donc évaluer cette chaîne et renvoyer : 6
*! signifie factorielle ---> Dans Excel = FACT() )
Sub evaluer_expressions()
'... début de la macro
rNg = Split("A1~A2~A3~A4~A5~A6~A7~A8~A9~A10", "~")
Application.ScreenUpdating = False
For i = 0 To 9
ss(i) = Range(rNg(i)).Text
[B] ff(i) = i[/B]
OK = Funct.StoreExpression(ss(i))
[B] If Not OK Then GoTo Error_Handler
ff(i) = Funct.Eval
Next i
Range("B1:B10") = Application.Transpose(ff)[/B]
' ... reste de la macro
End sub
Sub test_i() ' macro ou je demande votre aide,amis forumeurs.
Dim OK As Boolean:Dim ss(8) As Variant
Dim retval As Double:Dim i As...
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Val, x, i
Val = Target.Value
If Right(Val, 2) = ")!" Then
For i = 1 To Len(Val) - 2
If Mid(Val, i, 1) = "!" Then
x = x + Application.WorksheetFunction.Fact(Mid(Val, i - 1, 1))
End If
Next
Target.Offset(0, 1) = Application.WorksheetFunction.Fact(x)
End If
End Sub
Avec cette écriture3. Comment demande t'on une racine cubique en fonction Excel ?
Sub evaluer_expressions()
'... début de la macro
rNg = Split("A1~A2~A3~A4~A5~A6~A7~A8~A9~A10", "~")
Application.ScreenUpdating = False
For i = 0 To 9
ss(i) = Range(rNg(i)).Text
[B] ff(i) = i[/B]
OK = Funct.StoreExpression(ss(i))
[B] If Not OK Then GoTo Error_Handler
ff(i) = Funct.Eval
Next i
Range("B1:B10") = Application.Transpose(ff)[/B]
' ... reste de la macro
End sub
Sub test_i() ' macro ou je demande votre aide,amis forumeurs.
Dim OK As Boolean:Dim ss(8) As Variant
Dim retval As Double:Dim i As Long
Dim f As Double:Dim Funct As New clsMathParser
rNg = Split("A1~A2~A3~A4~A5~A6~A7~A8~A9", "~")
For i = LBound(rNg) To UBound(rNg)
ss(i) = Range(rNg(i)).Text
OK = Funct.StoreExpression(ss(i))
If Not OK Then GoTo Error_Handler
[COLOR=Blue][B]retval = Funct.Eval
MsgBox retval[/B][/COLOR]
Next
Error_Handler:
Debug.Print Err.Description
End Sub