Bonjour,
Je suis en train de créer un formulaire et j'ai besoin de votre aide. Je souhaite tirer de façon aléatoire des cartes, à chaque tirage il faut éliminer la puis les cartes qui ont déjà été tiré. Je ne sais pas ce qu'il faut que je rajoute à ma formule pour carte2 et carte3. Est ce que quelqun peux m'aider?
Dim carte1 as integer
Dim carte2 as integer
Dim carte3 as integer
Randomize
carte1 = Int(52 * Rnd) + 1
Randomize
carte2 = Int(52 * Rnd) + 1
Randomize
carte3 = Int(52 * Rnd) + 1
J'ai un autre soucis quand je suis en mode développeur dans l'onglet visual basic le formulaire ne s'affiche pas. Du coup je ne peux plus faire de modification. Je ne vois pas ou je peux afficher le formulaire.
Ou en es-tu ?
Pour continuer au rang de la réflexion.
Que se passe-t-il dans les faits avec un jeu de cartes que l'on veut distribuer aléatoirement ? ===>> on "touille" le paquet de cartes, puis on distribue les cartes dans l'ordre "touillé" du paquet, en commençant par celle du dessus, puis la suivante, etc ... ===>> donc, de cette manière, on y puise la carte de rang 1, puis celle de rang 2, puis celle de rang 3 et ainsi de suite jusqu'à la dernière.
Comment faire la même chose en informatique ? ===>>>
1) On met toutes les cartes dans un tableau dynamique
2) on "touille" aléatoirement ce tableau dynamique
3) on y puise les cartes tour à tour en commençant par la première, puis la seconde, etc ...
Comment "touiller" un tableau dynamique, alors ? ===>>>
Si tu avais utilisé avec soin le moteur de recherche de ce forum, tu serais "tombé" sur plusieurs discussions auxquelles j'ai participé et la solution que j'y ai donnée !
En voilà une (parmi d'autres) de ces discussions :
Le code nécessaire est dans mon message du 5 janv. 2013 à 20:04
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Pour mon problème de formulaire. Quand j'ouvre Virtual Basic Microsoft mon formulaire qui a déjà été crée devrait être visible afin que je puisse le modifié. Cependant il est invisible, la fenêtre de l'Userform1 n'est pas là. Je ne vois pas ou je peux faire apparaître cette fenêtre.
Quel est ton problème ?
Tu ne sais pas ce qu'est une ListBox ?
Ouvre ton aide VBA sur le mot ListBox et lis
Puis examine chacune de ses méthodes et lis (notamment les méthodes Additem, RemoveItem et Clear) puis ses propriétés et lis (notamment les propriétés listcount, ListIndex et List).
Si tu ne t'en sors pas, même débutant, après ces lectures (d'autant qu'elles sont assorties d'exemples très clairs), je doute fort que tu puisses alors aller bien loin, sauf à te contenter de codes écrits par d'autres et copiés/collés.
J'ai trouvé une solution plus simple avec une boucle loop while. Pour la listbox je ne connais pas du tout, il va falloir que j'étudie ça.
Je souhaite créer un bouton à la fin de l'application afin que carte1 soit réinitialiisé dans le but de pouvoir relancer une partie et de définir un nouveau nombre aléatoire à carte1. Quel est le code que je dois indiqué, j'ai pensé à carte1.clear ou carte1=0 mais cela ne focntionne pas.
Private Sub UserForm_Initialize() Dim carte1 as integer Randomize carte1 = Int(52 * Rnd) + 1 end sub Private Sub CommandButton4_Click() carte1 =0?
Je tire d'autres cartes mais je ne voulais pas même tous le script .Pour les tirages suivant, j'écris la même chose sauf que je rajoute une condition en plus apres loop while.
Par contre je ne sais pas comment réinitialiser les variables cartes à la fin du jeu dans le but de relancer le tirage des cartes au début du jeu. Une idée?
Une idée ?
Il me semble que tant NHenry que moi-même t'en avons données (et pas une, mais plusieurs).
Mais tu t'obstines sur une "lancée" qui, dans le meilleurs des cas, ne fera qu'alourdir et ralentir. (et ce : de plus en plus avec l'avancement de tes tirages, compte tenu d'une évidence majeure : plus tu aurais déjà tiré de cartes et moins ta boucle aura de "chances" de tomber sur une carte non déjà tirée !)
Mais c'est dans ce cas ta seule affaire (ton obstination et ta méthode).
Voilà voilà ...
Quant à
"Par contre je ne sais pas comment réinitialiser les variables cartes à la fin du jeu dans le but de relancer le tirage des cartes au début du jeu"
===>> nous ne savons même pas (tu n'en a rien dit), dans "quoi" tu as mis ces cartes au départ !
Enfin quoi : réfléchis un peu :
Lorsque tu tires une carte au hasard dans un jeu, elle n'est plus dans le paquet et ne risque donc pas d'être tirée à nouveau au prochain tirage, hein ...
Idem en informatique : que ce soit avec une collection, une listbox ou une plage de cellules : tu retires (de la collection, de la listbox ou de la plage de cellules) chaque carte déjà tirée et le prochain tirage se fait donc sur les cartes restantes (dans la collection, dans la listbox ou dans la plage de cellules).
Voilà !
Et toute autre "approche" serait très lourde, sinon insensée.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Je m'en suis sorti. Par contre je n'arrive pas à afficher une valeure numérique dans une textbox à l'ouverture du formulaire. J'ai essayé d'insérer lorsque je clicke sur mon bouton pour ouvrir le forumulaire. Mais cela ne fonctionne pas.
Sub Bouton3_Clic() UserForm1.Show Dim balance As Integer balance=1000 TextBox2.Value = balance End Sub
Ta nouvelle question n'a rien à voir avec le sujet (Tirage aléatoire de carte) de la présente discussion !
Si la difficulté objet de CETTE discussion est résolue, sujet à clore (un clic sur le tag "Résolu" au niveau de ton premier message).
Si tu as une AUTRE question ===>>> AUTRE discussion (discipline indispensable).