6 cellules et 4 opérateurs
Bonjour à tous.
Dans la suite de caractères cel1,cel2,cel3,cel4,cel5,cel6
quelle formule ou macro Excel permettrait d'obtenir, sans changer l'ordre des mots cel,1 cel2 etc., toutes les possibilités de remplacement de chaque virgule par chacun des 4 opérateurs (+ - * /) afin obtenir par exemple :
cel1*cel2+cel3/cel4-cel5*cel6
ou bien
cel1-cel2-cel3*cel4+cel5+cel6
ou bien
cel1/cel2/cel3/cel4+cel5/cel6
etc.
Il devrait y avoir, je crois, pour 4 opérateurs et 5 virgules (soit 6 mots différents)
4*3*2*1*5*4*3*2*1 soit 2880 combinaisons possibles.
Les mots renvoient chacun à une cellule de même nom (il y a peut-être une autre façon d'aborder le problème en alignant dans une colonne ces 6 cellules et en trouver tous les agencements possibles avec les 4 opérateurs inscrits dans 4 autres cellules : voir PJ)
Merci de se pencher sur ce problème que je n'ai pas su résoudre.
Bonjour,
Petite erreur dans ton évaluation des combinaisons.
6 éléments entre lesquels intercaler un opérateur. Donc 5 emplacements d'opérateurs. 4 opérateurs, donc 4 possibilités distinctes par emplacement : =4*4*4*4*4= 1024
Pour lister des combinaisons, c'est en général assez simple, on imbrique des boucles...
Pas de problèmes particuliers pour lister 1024 possibilités :
Sub ListerOpérations()
Dim o, a%, b%, c%, d%, e%, n%
o = Array("+", "-", "*", "/")
For a = 0 To 3
For b = 0 To 3
For c = 0 To 3
For d = 0 To 3
For e = 0 To 3
n = n + 1
ActiveSheet.Cells(n, 1) = [E1] & o(a) & [E2] & o(b) & [E3] & o(c) _
& [E4] & o(d) & [E5] & o(e) & [E6]
Next e
Next d
Next c
Next b
Next a
End SubVoir feuille 2.
Cordialement.
Bonjour
Eh ben, voila, c'est tout simple quand c'est un autre qui trouve ou qui sait !
Sur ce coup, mes macros 4.0 sont complètement dépassées et mes connaissances en statistique aussi.
Merci encore infiniment.
Bonjour à nouveau.
J'ai modifié ma macro 4.0 à l'aide de votre script.
A tout hasard la voici en pièce jointe (elle ne fonctionne pas seulement en Excel 2003, auquel je ne renonce pas).
Garantie sans virus par VirusTotal :
SHA256: c6ddfc628df7aa218e4d368ca6805f7226704cf2de57b632568d266970222945
Nom du fichier : Le compte est bon.rar
Ratio de détection : 0 / 52
Peut-être (ou sans doute) trouverez une façon plus élégante (et plus courte) en VBA pour un projet analogue.
Merci encore pour votre réponse rapide.
Ouille ! Les macros Excel 4 peuvent toujours rendre quelques services, même aujourd'hui, mais je suis plutôt handicapé pour m'en servir... J'étais en son temps, passé de Multiplan à Lotus pour arriver à Excel lors de la sortie de la version 5... avec VBA.
Il faudrait donc que tu me dises ce que tu veux faire, car j'aurai du mal à décoder sinon.
Ce que je ferai remarquer cependant, c'est que les opérateurs ne sont pas suffisants pour solutionner un jeu tel que le compte est bon : a+b/c ne donnera pas le même résultat que (a+b)/c, et par ailleurs les valeurs ne sont pas forcément prises dans l'ordre...
Cordialement.
Je n'ai pas fait en son temps le virage vers VBA, ou alors, pour des scripts très simples. J'ai fait, et fais encore, par contre de nombreuses macro 4.0, souvent longues à mettre au point mais qui marchent bien.
Cette macro, faite avec Ecel 2003, fonctionne avec Excel 2007 et probablement 2xxx, il suffit de charger MonCompteEstBon qui appellera la macro MonCompteMacro. Pour "rejouer" ensuite un tour supplémentaire, il faut appuyer sur le bouton Cliquerà nouveau ici.
Par ailleurs, il est vrai qu'Excel ne calcule pas comme nous chaque opération l'une après l'autre :
exemple : pour cel1*cel2+cel3*cel4*cel5+cel6 avec
cel1=6
cel2=9
cel3=1
cel4=6
cel5=6
cel6=10
le résultat donné par Excel est de 100 car :
cel1*cel2 = 54
cel3*cel4*cel5 = 36
et 54+36+cel6= 100
Avec les mêmes valeurs, en faisant chaque opération une à une (cel1*cel2 puis son résultat additionné à cel3 puis le nouveau résultat multiplié par cel4, etc.), on obtient 1990. Dans l'absolu, est-ce la méthode d'Excel (la première) ou bien celle de tout un chacun (la seconde quand un fait un calcul de tête), qui est la bonne ?
Je voudrais connaitre l'opinion d'un spécialiste VBA sur le résultat obtenu par cette approche vieillotte (macro 4.0) et découvrir le même projet mais cette fois écrit le plus possible en VBA, afin que, dans mon initiation tardive (vu mon âge) et laborieuse à ce langage, je puisse apprendre quelque chose : par exemple, quel script, pour remplacer le mien, qui permettrait d'arriver au but de ce jeu télévisuel actuel :
trouver un résultat exact (ou, à défaut, approchant) en se servant des 4 opérateurs et de 6 chiffres au total dont :
25, 50, 75 et 100 (une seule fois chacun) et/ou des chiffres de 1 à 10.
Un défi intéressant, non ?
Merci encore et bien cordialement.
A l'intention de MFerrand.
Merci pour le code ListerOpérations() qui permet d'intercaler les 4 opérateurs entre 6 éléments, en l’occurrence les 6 cellules jaunes E1 à E6 de la pièce jointe.
Ma demande, cette fois, si ce n'est pas abuser :
quel serait le code pour la même opération mais cette fois avec 2 éléments seulement de la liste en jaune (mais avec toutes les permutations possibles de 2 sur 6 comme les exemples en vert en colonne C, E G et H) ou avec 3 éléments avec toutes les permutations possibles, en bleu, ou avec 4 éléments avec toutes les permutations possibles, en rouge, ou avec 5 éléments avec toutes les permutations possibles, en beige : donc remplacer les cellules jaunes par celles des autres couleurs mais avec toutes les combinaisons par 2, par 3, par 4, par 5.
J'ai tenté d'adapter la macro ListerOpérations() à 2 éléments ou 3 ou 4, etc, mais c'est toujours les 2, 3 ou 4, etc premiers de la série en jaune E1-E6 et non les 2 ou 3 ou etc tirés au hasard de cette série.
Cela m'a permis de me rendre compte que ma macro était fausse puisqu'elle faisait tous les calculs possibles avec 6 cellules systématiquement, de sorte qu'elle ne trouvait parfois qu'un résultat approchant, alors qu'avec 2 cellules seulement, par une opération simple on avait un résultat juste et évident.
Ça devient nettement plus corsé, me semble t-il.
Mais le spécialiste d'Excel va trouver, c'est sûr !
Merci encore, avec ou sans solution.
Bonjour,
Suite à ton post précédent, j'ai regardé l'état de la question sur ce sujet...
Il semble qu'il existe plusieurs algorithmes de calcul pour aboutir au résultat.
Je n'ai pas trop le temps pour l'instant de me mettre en mesure d'en ajouter un !
Effectivement, les méthodes utilisées semblent privilégier les opérations sur 2 nombres, combinées ensuite avec les nombres restants.
Selon les systèmes utilisés, on aurait un max d'assemblages à examiner de 1,4 à 2,8 millions. Il est hors de question de lister ça dans des cellules
Depuis le temps que le jeu existe, quantité de solutions ont certainement été mises au point. Fais le tour pour revoir ta façon de procéder...
Bonne journée.