[VBA] -jeu casse-tête: aide pour évaluer String (pour calcul)

Staple1600

XLDnaute Barbatruc
Bonsoir et bonne nuit à tous

Edition du 27/03/08:
Voir dans le Lien supprimé.
____________________________
edition : pour info ,les pièces jointes initiales (que je ne n'utilise plus)
(je les ai mises si ca peut intéresser quelqu'un, Lien supprimé .

__________________________________________________
Voici 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() )
Edition 2: du 27/03/08
Vous trouverez la dernière version du classeur ici: Ce lien n'existe plus
 
Dernière édition:
Solution
Re : [VBA] -jeu casse-tête: aide pour évaluer String (pour calcul)

Re et bonne nuit

Edition du 27/03/08 : voila la correction du code qui semble fonctionner
Code:
 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

Pour être plus complet: voici la macro qui me pose problème
Code:
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...

Staple1600

XLDnaute Barbatruc
Re : [VBA] -jeu casse-tête: aide pour évaluer String (pour calcul)

Bonsoir à tous

Edition du 27/03/08:
Voir dans le Lien supprimé.

_______________________________
Après quelques recherches, j'ai trouvé quelque chose d'approchant (cf. sur cette fonction VBA sur le site ci-dessous: PTS Blog » UDF to Calculate an Arbitrary Formula

En attendant vos propositions, je vais tester en vous souhaitant un bon appétit.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA] -jeu casse-tête: aide pour évaluer String (pour calcul)

Re à tous

Edition du 27/03/08:
Voir dans le Lien supprimé.


--> carcharodon-carcharias:
Mon clavier est lui aussi très vieux, et parfois les touches bégaient.
 
Dernière édition:

ftho

XLDnaute Occasionnel
Re : [VBA] -jeu casse-tête: aide pour évaluer String (pour calcul)

Bonjour,

Une piste (loin d'être complète)
Code:
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
 

ya_v_ka

XLDnaute Impliqué
Re : [VBA] -jeu casse-tête: aide pour évaluer String (pour calcul)

Salut tout le monde

Quelques remarques en vrac :

1. Bonne idée, de quoi s'enerver un moment
2. Il faut aussi arriver à verifier que seuls les chiffres demandés soient utilisés (si je mets juste 3*2 dans la case c'est bon !)
3. Comment demande t'on une racine cubique en fonction Excel ?

Bonne chance pour la suite

Ya'v
 

Staple1600

XLDnaute Barbatruc
Re : [VBA] -jeu casse-tête: aide pour évaluer String (pour calcul)

Rebonjour à tous

Edition du 27/03/08:
Voir dans le Lien supprimé.

L'italie est venue à mon secours ;) .Voila ce que j'ai trouvé ici:math parser
Merci à Leonardo Volpi pour ces superbes fonctions VBA.

Bonne soirée à tous.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA] -jeu casse-tête: aide pour évaluer String (pour calcul)

Bonsoir à tous

Edition du 27/03/08:
Voir dans le Lien supprimé.

Personne pour me filer un petit coup de main ? Car avec mes seuls neurones et même en essayant d'adapter le code Leonardo Volpi , je ne vois pas comment solutionner cette histoire de factorielle.

En espérant que l'un de vous* se manifestera bientôt, bonne soirée à tous.

* je pense au vbaistes chevronnés.
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA] -jeu casse-tête: aide pour évaluer String (pour calcul)

Re et bonne nuit à tous

Edition du 27/03/08:
Voir dans le Lien supprimé.


PS:Je reste trés admiratif de la qualité du travail Leonardo Volpi et de ses camarades
(Michael Ruder, Thomas Zeutschler, Lieven Dossche.)
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : [VBA] -jeu casse-tête: aide pour évaluer String (pour calcul)

Re et bonne nuit

Edition du 27/03/08 : voila la correction du code qui semble fonctionner
Code:
 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

Pour être plus complet: voici la macro qui me pose problème
Code:
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
si je remplace ces lignes par : Cells(i,1).Text=Funct.Eval -> message d'erreur

La macro Sub test_ii() (cf. module staple_jeu) fonctionne , mais le code VBA =7 8 lignes.

Donc voir, svp, Lien supprimé de mon message de :
Lien supprimé , en vous souhaitant une bonne nuit . Et espérant vous lire, demain car je me sens un peu seul dans ce post ;) )
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 944
Membres
101 849
dernier inscrit
florentMIG