Eliot7500
Messages postés18Date d'inscriptiondimanche 22 décembre 2013StatutMembreDernière intervention 4 janvier 2014
-
Modifié par Eliot7500 le 23/12/2013 à 00:02
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 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.
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.
NHenry
Messages postés15155Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention26 septembre 2024159 23 déc. 2013 à 16:41
As-tu essayer de remplir une Collection, puis à chaque tirage de retirer l'élément pioché ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 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 ...
Eliot7500
Messages postés18Date d'inscriptiondimanche 22 décembre 2013StatutMembreDerniè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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 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.
Eliot7500
Messages postés18Date d'inscriptiondimanche 22 décembre 2013StatutMembreDerniè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?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Eliot7500
Messages postés18Date d'inscriptiondimanche 22 décembre 2013StatutMembreDerniè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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018209 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).