VBA pour excel répartition aléatoire d'image pour memmory

jhonnybegood Messages postés 11 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 11 mars 2007 - 3 mars 2007 à 19:55
jhonnybegood Messages postés 11 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 11 mars 2007 - 4 mars 2007 à 13:59
Bonsoir,
Je débute en VBA et je dois rendre un projet qui consiste à élaborer le jeu du memmory en VBA pour excel. J'aurais voulu savoir comment puis-je faire pour obtenir une répartition aléatoire des cartes (Quelle fonction utilisée...).

4 réponses

chapaleufu Messages postés 29 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 19 mai 2007
3 mars 2007 à 20:24
tu peux proceder de la maniere suivante :
en supposant que tu aies x cartes a disposer,
tu crees un array source a 2 dimension de longeur x (1 a x, nom des cartes)
tu fais une boucle sur la 1ere dimension du array en tirant de maniere aleatoire un nombre entre 1 et x (avec randomize et rnd) et tu remplis un array cible (de meme longueur) avec le carte
tu mets a 0 l'item correspondant dans le array source (pour ne pass reprendre cette valeur) et ainsi de suite
en fin de course ton array cible a ete rempli de maniere aleatoire (sans doublon)
il suffit maintenant de faire une boucle sur l'array cible de 1 a x et d'afficher les cartes dans l'odre dans lequel ellles ont ete rangees dans l'array cible.

pour generer de maniere aleatoire un entier entre 2 valeurs donnees tu peux utiliser cette fonction:

Function GenerateRND(LowLim as Integer, HighLim as integer) as Integer
Randomize
GenerateRND = Int((HighLim - LowLim + 1) * Rnd + LowLim)
End Function

dans ton cas lowlim=1, highlim=x
0
jhonnybegood Messages postés 11 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 11 mars 2007
4 mars 2007 à 10:39
Merci pour ta réponse rapide, mais je ne comprends pas se que tu qualifie de array source et array cible? Mon niveau en vba se limite a 4h de cours qui consistaient à afficher des boutons avec des messagebox, alors tu comprends mon soucis.

                                                                               Merci d'avance
0
chapaleufu Messages postés 29 Date d'inscription samedi 28 décembre 2002 Statut Membre Dernière intervention 19 mai 2007
4 mars 2007 à 11:47
ha !
un arrray est un tableau, donc tu as un tableau source qui contient le nom de chacune des x cartes et leur position (de 1 a x),  pour pouvoir avoir une distribution aleoire, on utilise le genrateur de nombre aleatoire pour generer une valeur entre 1 et x et qui ne soit pas nulle (pour eviter les doublons). on a besoin d'un tableau cible qui va recevoir la valeur generee aleatoirement.

la boucle pourrait resembler a ca:

for i=1 to x
   ' generer une valeur aleatorie entre 1 et x
   valrnd=GenerateRND(1,x)
   ' boucler jusqu'a ce qu'une valeur non nulle du tablea source soit trouvee
   do while arsource(valrnd,1)=0
       valrnd=GenerateRND(1,x)
   loop
   ' remplir le tableau cible avec la nom de la carte
   artarget(i)=arsource(valrnd,2)
   ' mettre le numero de la carte tiree a 0 pour qu'elle ne soit pas choisie a nouveau
   arsource(i,1)=0
next i

pour finir tu fais une boucle de 1 a x sur le tableau cible pour afficher les cartes puisqu'elles sont maintenant melangees.
0
jhonnybegood Messages postés 11 Date d'inscription samedi 6 janvier 2007 Statut Membre Dernière intervention 11 mars 2007
4 mars 2007 à 13:59
Je te remercie pour ta patience et ta rapidité.
A la prochaine. Je risque encore d'avoir beaucoup de questions à poser. 
0
Rejoignez-nous