Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

mastermind sur excel

Loison

XLDnaute Nouveau
Bonjour, je dois réaliser un jeu pour les cours , j'ai décidé de faire un mastermind sur excel , je l'ai réalisé mais je bloque sur quelque chose. Je voudrais établir un record a battre pour les joueurs. Le record se baserait sur le nombre de coups réalisé pour trouver la solution celui ayant fait le moins de coup a le record. Le problème est que je n'arrive pas a garder le record indéfiniment il s'efface a chaque partie que je fais. Je sais qu'il faudrait faire une macro pour cela mais je n'y arrive pas.
Merci de votre réponse.
 

Loison

XLDnaute Nouveau
Voici le classeur exemple. Merci pour votre réponse je voudrais faire apparaitre le record sur la feuille accueil et que celui ci ne disparaisse pas a chaque partie.
 

Pièces jointes

  • INFO Adrien.xlsm
    33 KB · Affichages: 86

chris

XLDnaute Barbatruc
Bonjour

Si cela doit être conservé le temps d'une session Excel, on peut stocker les infos de la partie dans un tableau (array) static ou, comme dans le cas, où cela doit être conserver sur plusieurs sessions, dans un tableau d'une feuille masquée.
 

Paf

XLDnaute Barbatruc
Re et bonjour chris,

toujours pas pu ouvrir, mais:

si le résultat est en B2 et le record en B3, dans la feuille de code de la feuille concernée:

VB:
Private Sub Worksheet_Calculate()
Range("B3") = Application.WorksheetFunction.Min(Range("B3"), Range("B2"))
End Sub

A+
 

Paf

XLDnaute Barbatruc
Re,

Dans la feuille de code de la feuille Mastermind :

VB:
Private Sub Worksheet_Calculate()
Application.EnableEvents = False
With Worksheets("Accueil")
If .Range("L10") = "" Then
    .Range("L10") = Range("B11")
    .Range("I10") = Range("B8")
Else
    If Range("B11") < .Range("L10") Then
        .Range("L10") = Range("B11")
        .Range("I10") = Range("B8")
    End If
End If
End With
Application.EnableEvents = True
End Sub

Et, pour éviter le #NA ( et le plantage du code) en début de partie, en B11 de la feuille Mastermind , il faudrait utiliser la fonction sierreur() => =sierreur(RECHERCHEV(4;D13:E36;2;FAUX); "")


Par ailleurs, dans les différentes sub, pour 'vider' la zone de saisie, plutôt que de le faire cellule par cellule, on pourrait utiliser:
VB:
Worksheets("Mastermind").Range("F13:I36").ClearContents

A+

edit: rajout de la modification formule
 
Dernière édition:

Loison

XLDnaute Nouveau
Merci de votre reponse mais je n'ai pas compris le code que vous m'avez envoyé pour la feuille de code mastermind, cela n'a aucun impact sur le faite que mon record disparait a chaque partie.
Merci beaucoup pour votre fonction =sierreur
 

Paf

XLDnaute Barbatruc
Bonjour Modeste geedee, et merci...

mais ma demande n'avais pas pour but de jouer , mais d'essayer d'apporter une solution à Loison.

@ Loison : curieux Calculate ne se déclenche pas

essayer de lancer cette macro:
VB:
Sub Macro()
Application.EnableEvents = True
End Sub

puis supprimer du code proposé au post 9, les deux lignes : Application.EnableEvents =...

A+
 

Discussions similaires

Réponses
5
Affichages
273
Réponses
16
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…