Excell permutation

anocheda Messages postés 55 Statut Membre -  
anocheda Messages postés 55 Statut Membre -
Bonjour,

Je cherche a melanger un jeu de carte sous excell
j'ai mon jeu sur la colonne 2 et sur les 52 premiere ligne
apres je permute mes carte 2 par 2 500 fois pour trier
j'ai le code suivant:

For i = 1 To 500
a = Round(51 * Rnd)
b = Cells(a, 2)
Cells(a, 2) = Cells(a + 1, 2)
Cells(a + 1, 2) = b

ca marche un petit moment et apres ca me met un message d'erreur 1004
je comprend pas pourquoi, ca me parait pourtant simple... merci pour votre reponse

Antoine
A voir également:

2 réponses

eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonjour,

si tu veux un nombre de 1 à 52 il faut mettre
a = ent(rnd()*52)+1

rnd() peut très bien renvoyer 0 comme valeur.

eric
0
lermite222 Messages postés 9042 Statut Contributeur 1 191
 
51 ...
A+
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282 > lermite222 Messages postés 9042 Statut Contributeur
 
52, j'insiste.... ;-)
j'ai utilisé ent()
0
lermite222 Messages postés 9042 Statut Contributeur 1 191 > eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention  
 
Ent = Fonction ou Sub non définie ?
C'est avec 2007 ?
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282 > lermite222 Messages postés 9042 Statut Contributeur
 
non non, j'ai inversé entre formule et fonction vba, c'est int() qu'il faut lire, désolé.
Donc a = int(rnd()*52)+1
0
lermite222 Messages postés 9042 Statut Contributeur 1 191 > eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention  
 
Je m'en doutait ben, mais int(0) =0 ? donc int(52)+1=53 cartes :DD
0
anocheda Messages postés 55 Statut Membre 3
 
Bonjour les gars et bravo, belle bataille!!!

mon probleme était resolu depuis la premiere reponsse (ajouter un +1 a mon code) et ca marche super
sur ce, pour soutenir un peu lermite, il faut que je m'arrete a 51!!!!

bien que int(52) ne se produira jamais et que "a" sera donc toujours inferieur ou egal a 52, je fais dans mon code une permutation de deux valeurs deux a deux

je remplace la lcarte de la igne "a" par celle de la ligne "a+1"...
du coup si je met 52, a un moment il va me replacer ma derniere carte par la ligne 53 et je vais avoir pas mal de trou...

mais bon..

Mercia vous deux

Sinon vous avez pas une réponse a m'on autre question :

J'ai plusieurs Textbox et je souhaite les modifier toutes d'un cou pavec un For:

mais etxtboxe s'appellent TexBox1, TextBox2...TexBox52
et je veux faire

For i = 1 to 52,

Me.TextBox i .Value=....

Next i

forcement ca marche pas, il reconnait pas TextBox i mais je sais pas comment faire

j'ai vu qu on pouvait utiliser une "Frame" mais je sais aps ce que c'est

si vous avez une idée merci

Antoine
0