formateur informatique

MasterMind, créer un jeu avec Excel

Accueil  >  Bureautique  >  Excel  >  Excel Avancé  >  MasterMind, créer un jeu avec Excel
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


MasterMind, Jeu créé avec Excel

Dans ce support, nous proposons de mettre en pratique des notions avancées que nous avons apprises au cours des différentes formations Excel, pour construire le célèbre jeu du MasterMind. Des fonctions de calculs seront nécessaires pour générer les saisies du joueur et contrôler les couleurs. La mise en forme conditionnelle d'Excel, sera mise à l'honneur pour mettre en évidence les pions de couleurs bien et mal placés. Le jeu parfaitement fonctionnel et interactif, sera conçu sans code VBA Excel, comme nous l'avions fait pour construire l'évaluation des candidats par QCM avec simplement des fonctions Excel.

Conception du jeu MasterMind avec fonctions et calculs Excel

Une combinaison de quatre pions de couleurs est placée dans un certain ordre au démarrage du jeu. Quatre couleurs de pions sont possibles. Les répétitions de couleurs sont autorisées. Bien sûr, cette combinaison est masquée pour le joueur. Ce dernier a le droit à 10 coups pour retrouver la combinaison des pions de couleur, dans le bon ordre. A chaque nouvelle ligne de pions suggérés, des indications de couleurs lui sont données dans la ligne suivi, selon que les pions sont bien rangés ou mal rangés.

Le classeur du Jeu MasterMind
Pour aller à l'essentiel, la structure du jeu ainsi que certains réglages de mises en valeur dynamiques, sont déjà conçus. Nous allons donc récupérer la source. Comme vous le constatez, l'extension de ce classeur est .xlsm au lieu de .xlsx. Ce format de fichier Excel prend en charge les macros Excel et notamment le code Visual Basic. Nous n'écrirons aucun code VBA mais nous construirons une macro pour initialiser le démarrage du jeu. Et c'est cette macro, attachée à un bouton qui produira quelques lignes de codes. Donc il n'est nul besoin de connaître le VBA Excel pour réaliser ce jeu.

Le plateau du jeu est schématisé entre les colonnes C et G. A chaque nouvelle partie, pour trouver la combinaison des pions, l'utilisateur devra saisir une des lettres R, V, B ou J dans chacune des cases, des lignes numérotées 1 à 10. Comme un format conditionnel à été posé sur ces cellules, chacune réagit à la saisie pour se transformer dans la couleur correspondante. C'est ce qu'illustre la capture ci-dessous.

Mise en forme conditionnelle Excel pour attribuer couleurs de pions du jeu Excel

Deux zones de formules sont prévues respectivement entre les colonnes I et L et entre les colonnes N et Q. Des calculs suivront les pions joués par l'utilisateur à chaque tour, afin de comparer leur position et couleur avec celles de la combinaison à trouver. Ils renverront une lettre dont un format dynamique se servira pour donner les indications de couleurs, dans la zone suivi, au-dessus du plateau de jeu. Ces deux colonnes seront masquées à l'issue. Elles servent de calculs intermédiaires.

Contrôle temps réel des saisies utilisateur par formules Excel

Initialisation et démarrage du jeu
En fonction des quatre lettres de couleurs inscrites en cellule I2, une formule doit permettre de générer un pion de couleur (une des lettres) dans chacune des cases situées entre I3 et L3.

La fonction Excel STXT() permet de prélever une partie d'une chaîne de caractères, selon la syntaxe suivante :

=STXT(chaine_de_caracteres ; position_depart ; longueur)

La chaîne de caractères correspond à la cellule à partir de laquelle nous souhaitons prélever une partie du texte. Il s'agit de la cellule I2 dans notre cas. La position de départ est l'indice à partir duquel nous souhaitons prélever un morceau de texte. Et enfin l'argument longueur permet de définir sur combien de caractères, cette partie doit être prélevée. Nous prélèverons chaque fois 1 caractère pour extraire l'une des lettres de la cellule I2, afin d'obtenir l'un des quatre pions.

Cette combinaison doit être aléatoire. Donc l'extraction des lettres à partir de la chaîne inscrite en I2 doit elle aussi être aléatoire. C'est la raison pour laquelle nous allons faire varier la position de départ, à l'intérieur de la fonction STXT, à l'aide de la fonction ALEA.ENTRE.BORNES(), dont la syntaxe est la suivante :

ALEA.ENTRE.BORNES(borne_inferieure ; borne_superieure)

Nous initialiserons ces deux bornes respectivement avec les chiffres 1 et 4, puisqu'il y a quatre caractères, correspondant chacun à un des pions.
  • Sélectionner l'ensemble des cellules de la combinaison, soit la plage I3:L3,
  • Taper le symbole = pour débuter le calcul,
  • Saisir le nom de la fonction pour extraire du texte, soit STXT(,
  • Sélectionner la cellule à partir de laquelle doit être réalisée l'extraction, soit I2,
  • Enfoncer la touche F4 du clavier afin de figer les références de cette cellule,
En effet, comme nous l'apprend la formation pour reproduire un calcul avec une seule formule, la touche F4 du clavier encadre les références de la cellule de dollars afin de la figer. Lorsque nous reproduirons cette formule sur la droite, pour extraire les autres pions de la combinaison, le calcul devra toujours réaliser son extraction à partir de la cellule I2, qui ne doit donc pas suivre le déplacement.
  • Taper un point-virgule afin de passer dans l'argument de la position de départ,
  • Saisir le nom de la fonction aléatoire suivi d'une parenthèse, soit ALEA.ENTRE.BORNES(,
  • Taper le chiffre 1 suivi d'un point-virgule, lui-même suivi du chiffre 4,
  • Fermer la parenthèse de la fonction ALEA.ENTRE.BORNES,
  • Taper un point-virgule pour passer dans l'argument de la longueur de la fonction STXT,
  • Saisir le chiffre 1 et fermer la parenthèse,
  • Valider le calcul par la combinaison de touches CTRL + Entrée,
Prélever aléatoirement les caractères de chaîne contenue dans cellule Excel

Nous reproduisons ainsi le calcul sur l'ensemble des cellules qui étaient présélectionnées. Comme vous le remarquez, grâce à la fonction Excel alea.entre.bornes, les lettres sont extraites de façon aléatoire dans chacune des cellules.

Mais comme la moindre action sous Excel, comme une saisie, déclenche le recalcul automatique de toutes les formules, une macro doit prélever cette combinaison, pour en copier les valeurs entre les cellules N3 et Q3. Ainsi, cette combinaison n'évoluera pas en fonction des saisies réalisées par le joueur. Cette macro doit en profiter pour nettoyer le plateau de jeu des potentielles saisies d'une précédente partie. Cette macro va générer un code VBA Excel, expliquant l'extension du classeur, pour sa prise en charge.

Une macro Excel consiste à enregistrer les actions simulées par l'utilisateur, afin de les reproduire à l'identique, une fois attachée à un bouton par exemple. La méthode la plus simple pour créer une macro consiste à afficher le ruban développeur, comme l'enseigne la formation pour débuter la programmation en VBA Excel.
  • Cliquer sur l'onglet Développeur en haut de la fenêtre Excel pour activer son ruban,
  • Dans la section Code, cliquer sur le bouton Enregistrer une macro,
  • Dans la boîte de dialogue qui suit, la nommer initialisation,
  • Puis cliquer sur Ok pour débuter l'enregistrement,
Créer macro Excel pour enregistrer actions à reproduire automatiquement

A ce stade, Excel enregistre la moindre des actions que nous réalisons. Il s'agit donc d'effectuer les tâches que nous souhaitons que la macro reproduise strictement à l'identique, lorsque nous cliquerons sur le bouton associé.
  • Sélectionner les cellules de saisie sur le plateau de jeu, soit la plage D8:G26,
  • Enfoncer la touche Suppr du clavier pour simuler la suppression de contenu,
  • Sélectionner la combinaison des pions générée, soit la plage de cellules I3:L3,
  • Réaliser le raccourci clavier CTRL + C pour les copier,
  • Cliquer dans la cellule de réception N3 pour l'activer,
  • Coller (CTRL + V) le contenu précédemment copié,
  • Cliquer sur la flèche de la balise active qui se déclenche,
  • Dans la liste, choisir Valeurs, comme l'illustre la capture ci-dessous,
Ainsi, nous supprimons la liaison qui existe entre les cellules sources et celles qui viennent d'être copiées. A chaque recalcul de la feuille, les valeurs copiées ne se réactualiseront pas.

Coller valeurs de calcul sans liaison pour empêcher recalcul et actualisation automatiques
  • Enfoncer la touche Echap du clavier pour vider le presse papier de la sélection copiée,
  • Cliquer dans une cellule arbitraire en bas à droite du classeur, par exemple R26,
  • Cliquer sur le bouton Arrêter l'enregistrement de la section Code du ruban Développeur,
La macro existe désormais, sous le nom initialisation, prête à reproduire toutes les actions que nous venons de lui montrer. Mais elle n'est pas encore matérialisée par un bouton. Elle existe à l'état de code VBA Excel. Ce bouton doit permettre de démarrer une nouvelle partie puisqu'il nettoie le plateau de jeu, et inscrit la nouvelle combinaison de pions à trouver. Nous allons donc construire ce bouton et l'associer à la macro.
  • Sélectionner la cellule C2 du titre du jeu,
  • Cliquer sur l'onglet Accueil pour activer son ruban,
  • Dans la section Alignement, cliquer sur le bouton Aligner à gauche,
  • Puis cliquer sur le bouton Augmenter le retrait,
En décalant le titre sur la gauche de la cellule, nous créons de la place, pour y déposer le bouton.
  • Cliquer de nouveau sur l'onglet Développeur pour activer son ruban,
  • Dans la section Contrôles, cliquer sur la flèche du bouton Insérer,
  • Dans la liste, choisir le tout premier contrôle en haut à gauche, celui du bouton,
  • Le tracer dans la cellule fusionnée, à droite du titre,
  • Dans la boîte de dialogue Affecter une macro qui surgit, sélectionner la macro initialisation,
  • Puis cliquer sur Ok pour valider l'association,
  • Cliquer à l'intérieur du bouton et sélectionner son intitulé,
  • Le remplacer par le texte Start,
Créer bouton de macro Excel pour déclencher code VBA, actions automatisées

Si nous saisissons des informations dans les lignes de jeu numérotées et que nous cliquons sur le bouton Start, tout est réinitialisé. La macro supprime toutes les saisies, impose le recalcul et donc la génération d'une nouvelle combinaison qui est copiée sans liaison. Si nous saisissons dans n'importe quelle cellule pour imposer le recalcul, une nouvelle combinaison est produite, mais les valeurs copiées elles, ne changent pas. C'est parfait, c'est donc bien la combinaison de la plage N3:Q3 que le joueur doit rechercher, par saisie des pions de couleur.

Contrôle des saisies utilisateur par formules
Pour chaque coup joué, des formules doivent comparer les pions proposés avec ceux de la combinaison générée, entre les colonnes I et L. Si le pion proposé est le même que celui de la combinaison à la même place, alors nous inscrivons l'indicateur O dans la cellule, signifiant que le pion est bien placé. Dans le cas contraire, nous laissons la valeur du pion de la combinaison. Pour vérifier ce critère, nous devons donc exploiter la fonction Excel conditionnelle Si. Il s'agit donc de comparer simplement les valeurs des cellules. Mais ces résultats doivent être proposés seulement lorsque le joueur a fini de poser ses quatre pions. Cette indication peut être connue grâce à la fonction NBVAL() qui comptabilise le nombre de cellules non vides dans une plage. Ainsi, tant que cette fonction ne retourne pas 4, signifiant que les 4 pions n'ont pas encore été posés, le reste du calcul ne doit pas être enclenché. Il s'agit donc de vérifier deux critères ensemble, celui de la valeur de la cellule, et celui du nombre de pions posés. C'est la fonction Excel ET() qui permet d'énumérer les conditions qui doivent être vérifiées ensemble.
  • Sélectionner les premières cellules pour le contrôle de saisie, soit la plage I8:L8,
  • Taper le symbole = pour débuter le calcul,
  • Saisir le nom de la fonction conditionnelle suivi d'une parenthèse ouvrante, soit SI(,
  • Saisir le nom de la fonction pour recouper les critères suivi d'une parenthèse, soit ET(,
  • Cliquer la cellule du premier pion posé, soit D8,
  • Taper le symbole = pour la comparaison,
  • Cliquer la cellule du premier pion de la combinaison, soit N3,
  • Enfoncer deux fois la touche F4 du clavier pour l'empêcher de se déplacer en ligne,
Seul un dollar persiste devant l'indice de ligne de la cellule (N$3). En effet, lorsque nous répliquerons le calcul, chaque pion sur la droite, devra être comparé avec chaque pion situé à la même place dans la combinaison. Donc la cellule doit pouvoir se déplacer en colonnes. En revanche, lorsque nous répliquerons le calcul sur les lignes du dessous, pour les coups suivants, chaque pion devra toujours être comparé avec celui de la combinaison, dont la ligne ne change pas.
  • Taper un point-virgule pour passer dans l'argument du critère suivant à énumérer,
  • Saisir le nom de la fonction de dénombrement suivi d'une parenthèse, soit NBVAL(,
  • Sélectionner la première ligne des pions joués, soit la plage D8:G8,
  • Enfoncer trois fois la touche F4 du clavier pour figer les références en colonne,
Cette fois, seul un dollar persiste devant les indices de colonnes de la plage de cellules ($D8:$G8). En effet, lorsque nous répliquerons ce calcul sur la droite pour contrôler les autres pions, nous devrons toujours comptabiliser le nombre de saisies entre les mêmes colonnes, qui ne doivent donc pas se déplacer. En revanche, lorsque nous répliquerons ce calcul pour les coups suivants, nous devrons comptabiliser pour les mêmes colonnes, les lignes du dessous. Donc cette plage doit se déplacer en lignes, expliquant l'absence des dollars devant leurs références.
  • Fermer la parenthèse de la fonction NBVAL,
  • Taper le symbole = suivi du chiffre 4 pour contrôler que tous les pions sont saisis,
  • Fermer la parenthèse de la fonction Et,
  • Taper un point-virgule pour passer dans la branche Alors de la fonction Si,
  • Saisir la lettre O entre guillemets, soit 'O',
  • Taper un point-virgule pour passer dans la branche Sinon de la fonction Si,
  • Sélectionner le premier pion de la combinaison, soit la cellule N3,
  • Enfoncer deux fois la touche F4 du clavier pour l'empêcher de se déplacer en lignes,
  • Fermer la parenthèse de la fonction Si,
  • Enfin, valider le calcul par CTRL + Entrée pour le répliquer sur les cellules sélectionnées,
La formation sur les trucs et astuces Excel enseigne ces techniques professionnelles au clavier pour gagner du temps. Si nous tapons une première rangée de pions dans la ligne 1 du plateau de jeu, les résultats de calculs s'affichent à l'issue. Un O pour oui s'inscrit en effet lorsque le pion est trouvé et bien placé. Dans le cas contraire, la lettre du pion de la combinaison d'origine est conservée. La syntaxe complète de la formule est la suivante :

=SI(ET(D8=N$3; NBVAL($D8:$G8)=4); 'O'; N$3)

Comme nous avons judicieusement figé certaines cellules impliquées dans le calcul, nous allons pouvoir répliquer la formule sur les lignes qui correspondent respectivement à tous les coups permis, sur le plateau de jeu.
  • Sélectionner toutes les cellules du calcul précédent, soit la plage I8:L8,
  • Réaliser le raccourci clavier CTRL + C pour les copier,
  • Sélectionner la première cellule correspondant au contrôle du coup 2, soit I10,
  • Coller les calculs par le raccourci clavier CTRL + V,
  • Réitérer cette opération pour les cellules I12, I14, I16, I18, I20, I22, I24 et I26,
Reproduire un calcul Excel de contrôle de saisies grâce aux références absolues

Comme l'illustre la capture ci-dessus, chaque ligne contrôle bien les pions du coup associé, en comparant toujours sa valeur à celle située à la même place, dans la combinaison d'origine, placée sur une ligne qui ne bouge pas.

Nous devons maintenant réaliser une formule plus complexe pour contrôler les pions qui sont bien présents dans la combinaison, mais qui sont mal placés. Il ne faut pas indiquer qu'un pion est mal placé parce qu'il est répété dans la proposition, alors qu'il a déjà été référencé comme bien placé dans le contrôle précédent. Pour cela, nous devons dénombrer (nb.si) la correspondance des pions précédents. Et bien sûr, ces résultats ne doivent être livrés que lorsque les quatre propositions de pions ont été saisies par le joueur. Nous proposons d'inscrire l'indicateur M dans la cellule, lorsqu'un pion mal placé est détecté, et rien dans le cas contraire.
  • Sélectionner toutes les cellules pour le calcul des pions mal placés, soit la plage N8:Q8,
  • Taper le symbole = pour commencer le calcul,
  • Saisir le nom de la fonction conditionnelle suivi d'une parenthèse, soit SI(,
  • Saisir le nom de la fonction pour recouper les conditions suivi d'une parenthèse, soit ET(,
  • Saisir la fonction de dénombrement pour vérifier que tous les pions sont présents, soit NBVAL(,
  • Sélectionner la plage de cellules des pions suggérés par le joueur, soit D8:G8,
  • Enfoncer trois fois de suite la touche F4 du clavier de manière à ne figer que les colonnes,
  • Fermer la parenthèse de la fonction NBVAL et taper le symbole = pour la comparaison,
  • Saisir le chiffre 4 pour vérifier que les quatre saisies ont été faites,
  • Taper un point-virgule pour énumérer le critère suivant de la fonction ET,
  • Sélectionner la cellule I8 du premier contrôle de pion bien placé,
  • Taper le symbole inférieur suivi du symbole supérieur, soit <> pour exprimer différent de,
  • Saisir la lettre O entre guillemets, soit 'O',
En effet, si le contrôle précédent a déjà référencé le pion comme étant bien positionné, il n'est pas nécessaire de chercher à savoir s'il est mal placé.
  • Taper un point-virgule pour passer au critère suivant dans l'énumération de la fonction ET,
  • Saisir la fonction de dénombrement suivi d'une parenthèse, soit NB.SI(,
  • Sélectionner la plage de cellules A8:D8 puis taper un point-virgule pour passer au critère,
  • Sélectionner la cellule D8 du premier pion suggéré, afin de la compter à nouveau,
  • Fermer la parenthèse de la fonction NB.SI,
  • Taper le symbole moins (-) du pavé numérique pour la soustraction,
  • Saisir de nouveau la fonction de dénombrement suivi d'une parenthèse, soit NB.SI(,
  • Sélectionner les cellules de pions contrôlés, soit la plage I8:L8,
  • Enfoncer trois fois de suite la touche F4 du clavier afin de figer les références en colonnes,
  • Taper un point-virgule pour passer à l'argument du critère de la fonction NB.SI,
  • Sélectionner la cellule en cours d'analyse, soit D8,
  • Fermer la parenthèse de cette deuxième fonction NB.SI,
  • Taper le symbole inférieur (<) du pavé numérique pour la comparaison,
  • Saisir la fonction de dénombrement conditionnel suivi d'une parenthèse, soit NB.SI(,
  • Sélectionner tous les pions de la combinaison à trouver, soit la plage de cellules N3:Q3,
  • Enfoncer la touche F4 pour fixer complètement cette plage de cellules,
  • Taper un point-virgule pour passer dans l'argument du critère de la fonction de dénombrement,
  • Sélectionner la cellule en cours d'analyse, soit D8,
  • Fermer la parenthèse de la fonction NB.SI,
Réalisons un petit arrêt sur image sur ce troisième critère de la fonction Et, que nous venons d'énoncer :NB.SI(A8:D8;D8) - NB.SI($I8:$L8;D8) < NB.SI($N$3:$Q$3;D8). Pour qu'un pion soit jugé comme mal placé, nous avons d'abord déterminé qu'il ne devait pas avoir été référencé comme bien positionné. Puis, en partant d'une plage de cellules mouvante débutant trois cellules plus tôt, nous faisons la différence entre le nombre de fois que le pion a déjà été proposé, avec le nombre de fois qu'il reste à trouver. Si cette différence est inférieure au nombre de fois que ce pion est présent dans la combinaison, c'est qu'il n'a pas encore été détecté comme mal positionné.
  • Fermer la parenthèse de la fonction ET,
  • Puis taper un point-virgule pour passer dans la branche Alors de la fonction Si,
  • Saisir la lettre M entre guillemets, soit 'M',
  • Taper un point-virgule pour passer dans la branche Sinon de la fonction Si,
  • Saisir deux guillemets pour laisser la cellule vide lorsque les critères recoupés ne sont pas validés, soit '',
  • Fermer la parenthèse de la fonction SI,
  • Valider la formule par CTRL + Entrée pour la répliquer sur les cellules sélectionnées,
=SI(ET(NBVAL($D8:$G8) = 4; I8 <> 'O'; NB.SI(A8:D8;D8) - NB.SI($I8:$L8;D8) < NB.SI($N$3:$Q$3;D8)); 'M'; '')

En résumé, les quatre pions doivent être suggérés ET le pion contrôlé ne doit pas avoir déjà été référencé comme bien placé ET sa présence doit être supérieure à celle déjà comptée sur une plage de cellules s'arrêtant juste avant. ALORS elle est référencée comme présente mais mal positionnée (M).

Si nous faisons une petite simulation sur la première ligne, nous cliquons sur le bouton Start pour débuter une nouvelle partie. La combinaison à trouver est JJRV comme l'illustre la capture ci-dessous. Nous tapons les propositions de pions RJVR en première ligne du plateau de jeu. Le premier contrôle confirme que le pion jaune est bien placé. Le second confirme que le rouge et le vert sont mal placés. Remarquez que le second pion rouge n'est pas contrôlé une seconde fois dans la mesure où il a déjà été correctement référencé.

Contrôles saisies et positions en temps réel par formules pour jeu mastermind Excel

Il s'agit maintenant de répliquer cette formule sur toute la hauteur du tableau. Et comme précédemment, comme nous avons judicieusement figé certaines cellules impliquées, nous pouvons le faire par copier-coller.
  • Sélectionner toutes les cellules du calcul des pions mal placés, soit N8:Q8,
  • Réaliser la combinaison CTRL + C pour copier tout le contenu,
  • Sélectionner la cellule N10 et réaliser le raccourci CTRL + V pour répliquer les calculs,
  • Puis réitérer cette opération sur les cellules N12, N14, N16, N18, N20, N22, N24 et N26,
Si nous poursuivons la simulation jusqu'à trouver le bonne combinaison, susceptible d'être masquée, nous constatons que toutes les indications fournies sont cohérentes et nous guident au fur et à mesure vers le bon enchaînement de pions à reconstruire.

Contrôle couleurs et positions des pions placés, par formule Excel, pour jeu Mastermind

Indicateurs visuels par consolidation des résultats
Pour que la simulation Excel soit la plus proche possible du jeu MasterMind, nous devons donner des indications de couleurs au joueur, au-dessus du plateau de jeu, selon que les pions sont bien ou mal placés. Nous choisirons un vert au-dessus de la colonne d'un pion correctement positionné et un orange au-dessus de la colonne d'un pion présent dans la combinaison, mais mal positionné.

Il s'agit de consolider les résultats précédents dans la ligne 4 du suivi, au-dessus du plateau de jeu. Un O doit s'afficher au-dessus d'un pion correctement placé et un M au-dessus d'un pion mal placé. La mise en forme conditionnelle déjà construite, se chargera d'adapter les couleurs dynamiquement. Il s'agit de récupérer les résultats précédents, en fonction de la ligne que le joueur vient de remplir. Comme les pions sont positionnés une ligne sur deux, nous devons reconstruire la logique de la numérotation, en fonction de la petite échelle incrémentée en colonne A.
  • Sélectionner la cellule B8 pour débuter le calcul de détection de la ligne en cours,
  • Taper le nom de la fonction conditionnelle suivi d'une parenthèse ouvrante, soit SI(,
  • Saisir ensuite la fonction comptant les cellules non vides suivi d'une parenthèse, soit NBVAL(,
  • Sélectionner la première ligne des pions à disposer, soit la plage de cellules D8:G8,
  • Fermer la parenthèse de la fonction NBVAL,
  • Taper le symbole = pour initier la comparaison,
  • Saisir le chiffre 4 et taper un point-virgule pour passer dans la branche Alors de la fonction Si,
  • Sélectionner le numéro de ligne correspondant en colonne A, soit la cellule A8,
  • Taper un point-virgule pour passer dans la branche Sinon de la fonction SI,
  • Taper 2 guillemets ('') pour une cellule vide lorsqu'il ne s'agit pas de la ligne en cours de jeu,
  • Fermer la parenthèse de la fonction Si et valider le calcul,
Si les quatre pions de la première ligne de jeu sont tous renseignés, alors la cellule affiche le chiffre 1, soit le numéro de la ligne en cours. Dans le cas contraire, rien ne s'affiche signifiant que cette ligne n'a pas encore été jouée. La syntaxe de la formule que nous venons de construire, est la suivante :

=SI(NBVAL(D8:G8)=4; A8; '')

La numérotation de la ligne se déclenche que si tous les pions ont été renseignés. C'est la raison pour laquelle nous les comptons avec la fonction NBVAL (NBVAL(D8:G8)=4), que nous intégrons dans une fonction SI pour valider la condition. La plage de cellules n'est bien sûr pas figée, puisque le calcul doit être répliqué sur les lignes du dessous, en suivant le déplacement. Si le critère est rempli, nous prélevons le numéro de ligne en colonne A (A8). Dans le cas contraire, la cellule est laissée vide. Cette formule doit permettre de numéroter toutes les lignes, si elles sont remplies.
  • Cliquer sur la cellule B8 pour la sélectionner,
  • Réaliser le raccourci clavier CTRL + C pour copier l'intégralité de son contenu,
  • Sélectionner la cellule B10 et réaliser la combinaison CTRL + V pour répliquer le calcul,
  • Réitérer l'opération sur les cellules B12, B14, B16, B18, B20, B22, B24 et B26,
Si nous faisons une simulation complète, chaque ligne intégralement renseignée se voit affectée d'une numérotation de ligne, dans la colonne B. C'est ce qu'illustre la capture ci-dessous. Dans cet exemple, il nous a fallu quatre coups pour trouver la bonne combinaison. Et cette ligne 4 est en réalité la septième ligne depuis le point de départ, à partir duquel nous réalisons les points de contrôle. Nous devons donc remonter cette information, pour pouvoir l'exploiter dans la ligne de suivi, afin de faire l'extraction des indicateurs (O et M) depuis les tableaux de contrôles, mais à partir de la bonne ligne. Nous allons utiliser une cellule arbitraire pour remonter cette information, la cellule A4.

Détection automatique des numérotations de lignes remplies par formules et calculs Excel

Nous devons prélever le dernier indice de ligne, soit le plus grand. Donc la fonction Excel Max est tout à fait appropriée, sachant qu'elle est capable d'ignorer les cellules vides ou de texte.
  • Cliquer sur la cellule A4 pour la sélectionner,
  • Taper le symbole = pour débuter la formule,
  • Saisir le nom de la fonction pour extraire la valeur maximale suivi d'une parenthèse, soit MAX(,
  • Sélectionner toutes les cellules de la colonne B, soit la plage B8:B26,
  • Fermer la parenthèse de la fonction MAX et valider la formule,
Dans notre cas, selon l'exemple de la capture ci-dessus, la fonction retourne la valeur 7, soit l'indice de ligne à partir de laquelle l'extraction doit être réalisée dans les zones de contrôles. C'est la fonction Excel Index qui permet d'extraire de l'information d'un tableau de données, en fonction d'un indice de ligne et d'un indice de colonne. L'indice de ligne est une variable dépendant de la valeur calculée en A4. L'indice de colonne est fixe mais dépend du pion. Colonne 1 pour le pion 1, colonne 2 pour le pion 2 et ainsi de suite. Cette recherche doit être réalisée dans une fonction Si pour permettre la consolidation. Si la valeur correspondant à l'emplacement du pion est un O, alors nous récupérons ce O, sinon si la valeur est un M, nous le récupérons. Dans le cas contraire, il ne faut rien afficher, car aucune indication ne peut être donnée au joueur. Et l'ensemble de ces fonctions doit être intégré dans une fonction Excel SiErreur pour ne pas afficher de message disgracieux en cas d'erreur, par exemple, lorsqu'il n'y a encore rien à rechercher.
  • Sélectionner la première cellule du suivi, soit D4,
  • Taper le symbole = pour initier le calcul,
  • Saisir le nom de la fonction de gestion d'erreur suivi d'une parenthèse, soit SIERREUR(,
  • Saisir le nom de la fonction conditionnelle suivi d'une parenthèse, soit SI(,
  • Saisir le nom de la fonction d'extraction suivi d'une parenthèse, soit INDEX(,
  • Désigner le tableau de recherche des pions bien placés, soit la plage de cellules I8:L26,
  • Enfoncer la touche F4 du clavier pour figer cette plage,
  • Taper un point-virgule pour passer à l'argument du numéro de ligne pour l'extraction,
  • Sélectionner la cellule A4 et enfoncer la touche F4 pour la figer,
  • Taper un point-virgule pour passer à l'argument de l'indice de colonne,
  • Saisir le chiffre 1 correspondant à la première colonne du tableau pour le premier pion,
  • Taper le symbole = pour la comparaison,
  • Puis, saisir la lettre O entre guillemets, soit 'O',
Si la recherche pour la ligne et la colonne indiquées renvoie la lettre O, cela signifie que le joueur a trouvé l'emplacement de ce pion, le premier en l'occurrence ici. Pour le signifier au format dynamique déjà en place, nous devons réécrire cet indicateur dans la cellule de réception.
  • Taper un point-virgule pour passer dans la branche Alors de la fonction SI,
  • Saisir de nouveau la lettre O entre guillemets, soit 'O',
Dans le cas contraire, nous devons vérifier si le pion existe bien dans la combinaison auquel cas, il doit être référencé par un indicateur M dans la cellule de réception. Nous devons imbriquer une seconde fonction Si dans la branche Sinon de la première pour permettre cette consolidation des résultats.
  • Taper un point-virgule pour passer dans la branche Sinon de la fonction SI,
  • Saisir de nouveau le nom de la fonction conditionnelle suivi d'une parenthèse, soit SI(,
  • Puis, saisir une fois encore la fonction de recherche avec une parenthèse, soit INDEX(,
  • Désigner cette fois le tableau des pions mal placés, soit la plage de cellules N8:Q26,
  • Enfoncer la touche F4 du clavier pour figer cette dernière,
  • Taper un point-virgule pour passer à l'argument de la ligne d'extraction,
  • Sélectionner la cellule A4 et enfoncer la touche F4 pour la fixer dans le calcul,
  • Taper un point-virgule pour passer à l'argument de l'indice de colonne,
  • Puisqu'il s'agit toujours du calcul pour le premier pion, saisir le chiffre 1,
  • Fermer la parenthèse de la fonction Index et taper le symbole = pour la comparaison,
  • Saisir la lettre M entre guillemets, soit 'M',
  • Taper un point-virgule pour passer dans la branche Alors de cette seconde fonction Si,
  • Saisir de nouveau la lettre 'M' pour réceptionner l'indicateur quand le test est validé,
  • Taper un point-virgule pour passer dans la branche Sinon de cette fonction SI imbriquée,
  • Taper deux guillemets '' pour laisser la cellule vide lorsqu'aucun résultat n'est trouvé,
  • Fermer la parenthèse de la seconde fonction SI,
  • Puis fermer de nouveau une parenthèse, celle de la première fonction SI,
  • Taper un point-virgule pour passer dans l'argument de gestion d'erreur de la fonction SiErreur,
  • Saisir de nouveau deux guillemets '' pour ignorer le souci lorsqu'une erreur est remontée,
  • Enfin, fermer la parenthèse de la fonction SIERREUR qui englobe toutes les autres,
  • Puis valider le calcul,
Nous avons figé certaines références de cellules et de plages bien que nous ne puissions pas reproduire directement cette formule, dans la mesure où la valeur du numéro de colonne est inscrite sous forme de constante. Nous aurions d'ailleurs pu inscrire ces indices de colonnes au-dessus de la ligne de suivi de manière à rendre la formule complètement dynamique. Néanmoins, nous pouvons copier cette formule dans les autres cellules en adaptant deux fois le numéro de colonne au pion concerné.
  • Sélectionner le résultat de la formule d'extraction, soit la cellule D4,
  • Copier l'intégralité de son contenu par le raccourci clavier CTRL + C,
  • Sélectionner la cellule E4 et réaliser le raccourci CTRL + V pour répliquer le calcul,
  • Depuis la barre de formule, modifier deux fois l'indice de colonne 1 en 2, dans les deux fonctions Index de la formule,
  • Réitérer cette opération en cellules F4 et G4 avec respectivement les indices de colonnes 3 et 4,
Si nous réalisons une nouvelle simulation comme celle qui est illustrée par la capture ci-dessous, nous constatons que tous les indicateurs pertinents s'affichent désormais dans la ligne de suivi. Lorsque l'indicateur est vert, nous conservons l'emplacement du pion sur la ligne de jeu suivante. Lorsqu'il est orange, nous tentons de le déplacer et lorsqu'aucune indication n'est donnée, nous essayons une autre couleur.

Extraction et consolidation de données Excel avec gestion erreurs

L'application Excel du jeu du MasterMind fonctionne donc tout à fait honorablement. Les colonnes des calculs intermédiaires peuvent ainsi être masquées. De cette manière, elles ne seront plus visibles pour l'utilisateur, mais toujours disponibles pour les calculs. Ainsi, après avoir masqué les colonnes A et B par exemple, ainsi que les colonnes comprises entre H et R, nous obtenons un jeu épuré des informations intermédiaires.

Jeu Excel du MasterMind conçu avec Excel sans code VBA

Nous pouvons considérer que cette application est en version Beta OpenSource, car il existe sans doute des exceptions non encore gérées. Néanmoins cette mise en pratique est un très bon début tout à fait fonctionnel, pour jouer au jeu du MasterMind qui je vous le rappelle a été conçu principalement à l'aide des fonctions de calcul Excel, et sans code Visual Basic.
 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn