cs_Titrax
Messages postés41Date d'inscriptionlundi 15 avril 2002StatutMembreDernière intervention27 septembre 2002
-
18 avril 2002 à 17:12
cs_Titrax
Messages postés41Date d'inscriptionlundi 15 avril 2002StatutMembreDernière intervention27 septembre 2002
-
19 avril 2002 à 01:17
j ai besoin d'assimiler des valeurs aléatoires à des valeurs fixes mais SANS répétition.
Voila mon prog mais ca plante (trop long)
Randomize
' Renvoie valeur aléatoire
Do
LesCartes = Int(31 * Rnd)
If PriseCarte(LesCartes) = False Then
CarteNormale(a)=CarteNormaleAssimile(LesCartes)
PriseCarte(LesCartes) = True
a = a + 1
End If
Loop Until a = 32
Donc il boucle dès que le nombre est pris. donc existe t il une fonction qui prenne qu'une seule fois un nombre entre deux valeurs ????
TFlorian
Messages postés194Date d'inscriptiondimanche 3 mars 2002StatutMembreDernière intervention19 décembre 20053 18 avril 2002 à 22:43
Bonjour,
Je ne sais pas si ce son ttest problemmes mais voici ce que j'ais constate:
- le prog apparait comme non repondant pour windows :
c'est que tu est bloque dans une boucle ! le systeme essay de la resoudre avant de redonner la main a windows :
solution :
rajoute l'instuction DoEvents dans le programme,
elle donne la main momentanement a windows pour qu'il ne prenne pas le prog comme plante ;-)
(cas de calcules long ou boucles imbriqees)
If PriseCarte(LesCartes) = False Then
CarteNormale(a) = CarteNormaleAssimile(LesCartes)
PriseCarte(LesCartes) = True
a = a + 1
End If
Loop Until a = 32
-il semblerais que tu ne sorte jamais de ta condition, appres analyse, il semble normale que avec 31 cartes tu ne puisse en tiree 32 ;-)
voici l'ensemble du code que j'ai tester :
Dim PriseCarte(32)
Dim CarteNormaleAssimile(32)
Dim CarteNormale(32)
Randomize
' Renvoie valeur aléatoire
Do
LesCartes = Int(31 * Rnd)
DoEvents
If PriseCarte(LesCartes) = False Then
CarteNormale(a) = CarteNormaleAssimile(LesCartes)
PriseCarte(LesCartes) = True
a = a + 1
Debug.Print a, LesCartes
msg = msg & "Tirage N°" & a & ", carte " & LesCartes & vbCrLf
End If
Loop Until a = 31
MsgBox msg, , "TFlorian ;-)"
End Sub
cs_Titrax
Messages postés41Date d'inscriptionlundi 15 avril 2002StatutMembreDernière intervention27 septembre 2002 19 avril 2002 à 01:17
Merci TFlorian, c'est axactement ce que je voulais...je te remercie car c'est pour un jeu de belote en réseau car on s'emmerde un peu en cours alors merci.......