Jeu VBA Excel userform

Bonjour,

Je suis nouvelle sur le forum, j'espère trouver l'aide qu'il me faut ici. Je débute en VBA excel et je dois créer un jeu. Le but de ce jeu est de générer un nombre aléatoire compris entre 1 et 1000. Le générateur, j'ai réussi à le faire. Cependant, impossible de faire le reste.

L'utilisateur doit rentrer sa proposition dans un textbox, puis valider sur un commandbutton. Il a 10 chances, s'il n'y arrive pas le nombre recherché s'affiche dans un autre textbox.

Le joueur doit pouvoir quitter le jeu n'importe quand grâce à un autre commandbutton. Un troisième textbox affiche le nombre de coups déjà effectué.

Des mesages s'affichent à chaque nouvelle proposition, supérieure ou inférieure.

J'espère avoir été assez claire. Répondez moi vite s'il vous plait, merci d'avance!

J'ai déjà réussi a faire ce code mais il m'empêche de rentrer de nouvelles valeurs :

Private Sub UserForm_Click()

Dim nombre_aleatoire As Integer

Dim i As Integer

'Initialiser le générateur de nombres aléatoires

'=> Randomize : à ajouter avant d'utiliser Rnd pour obtenir des valeurs complètement aléatoires

Randomize

'Nombre aléatoire entier entre 1 et 1000 :

nombre_aleatoire = Int(1000 * Rnd) + 1

For i = 1 To 10

If TextBox1 > nombre_aleatoire Then

MsgBox ("Ce nombre est supérieur au nombre rechrché !")

Else

If TextBox1 < nombre_aleatoire Then

MsgBox ("Ce nombre est inférieur au nombre recherché")

End If

End If

If CommandButton2 = True Then

Exit For

End If

Next i

TextBox3 = i

If i = 10 Then

TextBox2 = nombre_aleatoire

End If

End Sub

Merci de bien vouloir m'aider.. !

Personne ? Je pensais qu'on pouvait avoir de l'aide ici.

Bonsoir,

Ce qui m'interpelle, c'est qui doit faire le jeu ? Toi ou les contributeurs du forum ? C'est dans le cadre de l'école ou d'une formation ? Si c'est toi, on veut bien t'aider, mais les contributeurs ne sont pas la pour faire cela à ta place.

Voici un exemple de début de piste :

Ton userform doit avoir par exemple (car il y a plusieurs solutions) :

un textbox pour la saisie du nombre et un autre masqué pour trouver la valeur cible que tu pourrais rendre visible à la fin et un autre protégé contenant le nombre de coups restants.

trois boutons, un pour démarrer le jeu ou le réinialiser, un pour valider le nombre saisi et un pour fermer l'userform (sauf si tu préfères uniquement l'utilisation de la croix)

un label pour afficher les messages d'informations.

Les événements :

le premier bouton doit démarrer le jeu, donc déterminer le nombre à trouver, le stocker dans un des textbox après l'avoir masqué, il doit aussi pouvoir arrêter ou réinitialiser le jeu s'il est déjà démarré, il remet à 10 la valeur du textbox du nombre de coups.

le second bouton recherche si la valeur saisie par le joueur est >,< ou égale à la valeur recherchée contenue dans le textbox masqué et décrémente le compteur du troisième textbox du nombre de coups. ce bouton informe le joueur grâce au label d'information

.../...

Ce que je veux te faire comprendre, c'est qu'il faut structurer la conception de ton jeu sur papier ou autre support, et ensuite passer à la programmation qui n'est que la seconde étape, la troisième seraient les tests, et la quatrième la présentation de l'interface de ton jeu.

J'ai quand même regardé ton code, plusieurs choses ne vont pas :

il ne faut pas utiliser UserForm_Click mais UserForm_Initialize() pour initialiser le formulaire

le nombre à trouver change à chaque fois que l'on clique sur l'userform, il sera donc extrêmement difficilement de le trouver s'il change à chaque fois qu'on effectue la comparaison entre la valeur du joueur et ce "nombre_aleatoire" : il faut un événement pour initialiser le nombre à trouver (bouton démarrer) et un autre événement pour comparer (bouton comparer)

si tu ne veux pas de textbox pour stocker le nombre à trouver, il faut alors déclarer la variable "nombre_aleatoire" au niveau du module et non pas au niveau de la procédure, en effet, sa durée de vie dépend de l'emplacement de la déclaration et de sa portée (publique, privée)

Essaie d'avoir une vision d'ensemble de ton jeu et reviens vers nous pour qu'on t'aide si besoin, mais tu as fais le plus difficile, de trouver la formule pour avoir le nombre aléatoire, le reste n'est que logique, mais vas-y par étape.

Après on pourra t'aider si tu bloques ou si tu veux le fiabiliser, par exemple si tu veux que la personne ne puisse saisir que des chiffres...

Je suis étudiante, donc c'est dans le cadre d'une formation. Savoir créer une application. Mon userform a un peu change depuis cet après-midi. J'ai déjà fait les trois textbox celles contenant le chiffre mystère est masquée. Mais mon code m'empêche d'arrêter a 10. Comme si que mon compteur ne marchait pas. En fait, mon jeu ne s'arrête jamais.

Je vous remercie de m'avoir répondue. Je posterai mon nouveau code si vous en avez besoin.

Bonne fin de soirée.

Je ne sais pas comment tu as envisagé ton jeu, mais en principe tu as un bouton Démarrer qui mets le nombre de coups à 10.

Tu as donc un autre textbox (masqué) qui stocke le nb de coups restants. Pour l'instant, tu es en phase de création, alors affiche ce textbox pour contrôler la valeur.

Quand le joueur clique sur le bouton "Jouer" ou "Contrôler", je ne sais pas comment tu l'as nommé, bref, le programme doit comparer la valeur du joueur avec la valeur cible, puis décrémenter le textbox qui contient le nombre de coups. Tout cela doit être fait dans l'événement du bouton "_Click()" mais surtout pas celui de l'userform. A chaque appui sur le bouton, le nb de coups doit diminuer de 1. Tu dois aussi définir la fin du jeu quand le nb de coups est à zéro. Utilise la propriété Enabled=False du bouton "Jouer" quand le jeu est fini. Tu le mettras à True lors de la réinitialisation du jeu.

Rechercher des sujets similaires à "jeu vba userform"