VBA pour excel répartition aléatoire d'image pour memmory
jhonnybegood
Messages postés11Date d'inscriptionsamedi 6 janvier 2007StatutMembreDernière intervention11 mars 2007
-
3 mars 2007 à 19:55
jhonnybegood
Messages postés11Date d'inscriptionsamedi 6 janvier 2007StatutMembreDernière intervention11 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...).
chapaleufu
Messages postés29Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention19 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
jhonnybegood
Messages postés11Date d'inscriptionsamedi 6 janvier 2007StatutMembreDernière intervention11 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.
chapaleufu
Messages postés29Date d'inscriptionsamedi 28 décembre 2002StatutMembreDernière intervention19 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.