Tirage aléatoire de carte

Résolu
Eliot7500
Messages postés
18
Date d'inscription
dimanche 22 décembre 2013
Statut
Membre
Dernière intervention
4 janvier 2014
- Modifié par Eliot7500 le 23/12/2013 à 00:02
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
- 28 déc. 2013 à 17:45
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.
A voir également:

6 réponses

ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Modifié par ucfoutu le 28/12/2013 à 11:14
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 :

http://codes-sources.commentcamarche.net/forum/affich-1621301-debutant-vba-aide-pour-tirage-aleatoire

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
1
NHenry
Messages postés
14942
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
2 juillet 2022
161
23 déc. 2013 à 00:39
Bonsoir,

Pour éviter le rejeu des cartes, regardes la classe Collection, elle te sera utile, je pense.

Pour le formulaire, je ne vois pas ce que ça peut être, pas assez d'info.
0
Eliot7500
Messages postés
18
Date d'inscription
dimanche 22 décembre 2013
Statut
Membre
Dernière intervention
4 janvier 2014

23 déc. 2013 à 09:11
J'ai trouvé cet article là : http://codes-sources.commentcamarche.net/faq/370-probabilites mais cela ne m'aide pas beaucoup, il ne parle de tirage avec un nombre exclu. Il y a peut être un autre article qui en parle mais je n'ai pas trouvé.

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.
0
NHenry
Messages postés
14942
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
2 juillet 2022
161
23 déc. 2013 à 16:41
As-tu essayer de remplir une Collection, puis à chaque tirage de retirer l'élément pioché ?
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
23 déc. 2013 à 17:33
Bonjour, Même une listbox ferrait l'affaire
Et même , si on est sous VBA/Excel, la colonne A d'une feuille de calcul
Etc ...
0
Eliot7500
Messages postés
18
Date d'inscription
dimanche 22 décembre 2013
Statut
Membre
Dernière intervention
4 janvier 2014

23 déc. 2013 à 23:58
Une listebox peux tu m'en dire un peut plus je suis novice sur VBA.
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
24 déc. 2013 à 09:27
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.
0
Eliot7500
Messages postés
18
Date d'inscription
dimanche 22 décembre 2013
Statut
Membre
Dernière intervention
4 janvier 2014

25 déc. 2013 à 17:38
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?
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
25 déc. 2013 à 21:07
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Eliot7500
Messages postés
18
Date d'inscription
dimanche 22 décembre 2013
Statut
Membre
Dernière intervention
4 janvier 2014

28 déc. 2013 à 17:28
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
0
ucfoutu
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
28 déc. 2013 à 17:45
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).
0