[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)

Bonjour à tous
dernier message:
En attendant de vous lire, bonne soirée à tous.



+++++++++++++++++++++++++++++++++++++
Petit récapitulatif:

-premières ébauches (non satisfaisantes) et n'utilisant pas le module de classe.
Anciennes versions :Ce lien n'existe plus
 
Dernière édition:

Excel_lent

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

Salut Staple et les 1600 autres lecteurs.

Pour ne pas te laisser à tes plaisirs solitaire(avec ou sans s) :

+ , -, *, / et trois autres (que je vous laisse chercher)

Pourquoi « trois » ?

Sqr(9) peut se remplacer par 9 ^ (1/2) ou par 9 ^ 0.5 (si le séparateur décimal est autorisée*, les parenthèses l’étant).


( en utilisant 1 fois chaque chiffre par ligne) :

Ici 2*3*(9-8)*(7-6)*(5-4)*sqr(1+0), c’est le cas; mais pas là sqr(9)*sqr(9)- sqr(9) !

*D’ailleurs est-ce chiffre ou nombre ? Le nombre deux s’écrit avec 1 chiffre tandis que le nombre dix s’écrit avec 2 chiffres. Peut-on utilser 10 ?

Pour être moins rigoureux sur le plan de la sémantique mais plus sur le plan Excel,

ta ligne Cells(i,1).Text=Funct.Eval pose problème car i commence à 0 (premier indice pour n’importe quel tableau d’une dimension mais surtout pas numéro de ligne).
Essaie avec Cells(i+1,1).Text=Funct.Eval.


Dernière remarque : dans ce fichier, la lecture des codes m’est indigeste. D’où mon peu d’empressement à l’étudier et une réponse tardive, peut-être, non satisfaisante.

Bonne journée à tous

 

Staple1600

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

Bonjour Excel_lent, bonjour à tous

Merci de ta réponse (cela fait plaisir , je me sens moins seul ;) )
A force de tests et d'essai j'ai trouvé une solution qui semble fonctionner.

J'espère que tu voudras tester le fichier (ainsi que ceux-ci que ce classeur intèresserait) et me laisser des commentaires et conseils.

---> Excel_lent
Dernière remarque : dans ce fichier, la lecture des codes m’est indigeste. D’où mon peu d’empressement à l’étudier et une réponse tardive, peut-être, non satisfaisante.
Si tu parles de l'abus de Chr , c'était juste histoire ne pas voir les solutions
lisibles dans le code VBA.

EDITION :La dernière version à une correction du code de la macro : Sub test_i()
renommée dans cette version : evaluer_expressions
 
Dernière édition:

Staple1600

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

Re à tous

Edition:
Le fichier est ici: Ce lien n'existe plus

Salut Staple et les 1600 autres lecteurs.
( en utilisant 1 fois chaque chiffre par ligne) :
Ici 2*3*(9-8)*(7-6)*(5-4)*sqr(1+0), c’est le cas; mais pas là (2) sqr(9)*sqr(9)- sqr(9) !
*D’ailleurs est-ce chiffre ou nombre ? Le nombre deux s’écrit avec 1 chiffre tandis que le nombre dix s’écrit avec 2 chiffres. (3) Peut-on utilser 10 ?
Pour repréciser les règles et répondre à tes questions:
Le but est d'arriver à trouver 6 comme résultat en utilisant les chiffres de 0à 9 en utilisant les opéateurs mathématiques suivant : +, -, *, /
et pour certains cas : racine carrée, racine cubique et factorielle

La zone de saisie est dans la plage A1:A10. Dans chaque cellule on ne peut utiliser que trois chiffres (et utiliser 1 chiffre 1 fois, soit n'utiliser que 3 chiffres par cellule pour les calculs)
Exemple en A1: on ne peut utiliser que 0
Donc: (0!+0+!+0!)! --> Ok
Mais 0!+0!+0!+0!+0!+0! n'est pas bon (même si le résultat donne 6)
Car le zéro est utilisé plus de 3 trois.

(2) Ici c'est bon car tu as utilisé le 9 trois fois
(3) Dans le classeur je me suis arrêté à 9

Rappel:
A1: on ne utiliser que trois 0
A2: on ne utiliser que trois 1
A3: on ne utiliser que trois 2
A4: on ne utiliser que trois 3
A5: on ne utiliser que trois 4
A6: on ne utiliser que trois 5
A7: on ne utiliser que trois 6
A8: on ne utiliser que trois 7
A9: on ne utiliser que trois 8
A10: on ne utiliser que trois 9

 
Dernière édition:

Excel_lent

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

Re et re,

JM, je me serais contenté de
Règle du jeu

Vous devez pour chaque ligne saisir une suite de calculs
qui vous donnera 6 et ceci avec 3 fois le même nombre.

Exemple : 2+2+2 = 6
Remarques :

Ta fonction « sbr » n’est pas une fonction de base d’Excel.

Tu aurais pu, tout aussi bien, créer une fonction biaiser telle que biaiser(x) = 2 quel que soit x.

L’appel de fonctions classiques connues d'Excel peut donner des solutions.
pour 0, tu as (cos(0)+cos(0)+cos(0))!
pour 1, tu as (log(1)!+log(1)!+log(1)!)!
pour 3, tu as PPCM(3;3+3)
pour 4, tu as ENT(ASINH(4))*ENT(ASINH(4))+ENT(ASINH(4))
pour 6 tu as 6^(6/6)

Par contre, je suis plus gêné par 7 – 7 / 7.
Avec la priorité mathématique des opérations on a 6 et avec Excel on a 39270,
5 + 5 / 5 ne causant pas d’ennui !

Tu t’es plongé dans « un tonneau des Danaïdes » !
Quant à moi je retourne à mes chères études : l’Awalé par Excel (ou comment récolter les graines de l’autre).
 

Staple1600

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

Re à tous

--> Excel_Lent:
A l'origine, j'avais conçu un classeur en utilisant les fonctions natives d'Excel, c'est à dire:
FACT() ---> Factorielle, RACINE() ---> Racine carrée et A1^(1/3) --> Racine cubique
Donc j'avais un classeur basique avec ce qu'il fallait pour résoudre ce petit jeu.
Ensuite j'ai voulu que l'on puisse écrire naturellement dans Excel en utilisant l'écriture conventionnelle mathématique (cf mes premières pièces jointes Lien supprimé )
En cherchant sur le net , j'ai trouvé le module de classe de Leonardo Volpi, et je l'ai utilisé dans la dernière version du classeur, en ayant néanmoins un souci relaté dans Lien supprimé

• Pour rappel :les contraintes du jeu sont donc :
Les seuls "opérateurs mathématiques" permis sont:
+, -, *, / , !, racine carrée et racine cubique et les parenthèses.

Si certains d'entre vous pouvaient tester le classeur, afin de voir
s'il n'y a pas de bug, ce serait sympa.

De même, si vous pouviez jeter un oeil sur le code VBA ( le mien, pas celui de Leonardo :) car j'en suis à essayer de comprendre son travail) et me dire si j'ai commis des erreurs de syntaxe ou de conception, jen serai ravi.

Bonne soirée à tous.


PS:pour éviter de descendre trop bas dans le fil, je remets l'adresse pour télécharger le zip
Lien supprimé
 
Dernière édition:

Staple1600

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

Bonjour à tous


Un petit up dominical

Il n'y a vraiment personne pour m'accompagner dans ce post ?

Je vais commencer à me sentir esseulé :eek:.

J'ai pas vu un chat ici depuis Lien supprimé.




Au plaisir (rare) de vous lire, je vous souhaite un bon appétit et bon week-end à tous.
 
G

Guest

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

bonjour Stapel,

Si, si il ya quelqu'un dans les parages, admiratif devant le travail des matheux, mais incapable d'apporter un + quelconque à l'histoire.

si ce n'est des compliments.

A+
 

Staple1600

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

Bonjour Hasco


Merci je me sens un peu moins seul.

Je te rejoins dans l'admiration sur le travail de Leonardo Volpi

(cf son module de classe dans cette pièce jointe: Lien supprimé

Tu as essayé de trouver les solutions?

Bon week-end à toi, et aux autres forumeurs.
 

Discussions similaires

Statistiques des forums

Discussions
312 223
Messages
2 086 407
Membres
103 201
dernier inscrit
centrale vet