9 Ctrl Image, 9 images attribution aléatoire ?

Creepy

XLDnaute Accro
Bonsoir à tous,

Mon dernier poste avant mes vacances mais je dois dire que je ne comprends pas grand chose à la génération aléatoire.

J'ai 9 controls Image (Img1, Img2, etc...) et neuf images (Image1.bmp, Image2.bmp, etc..).

Je voudrais faire une attribution aléatoire des 9 images dans les neufs controls mais sans redondance bien sure !!!

Comment faire ?

Merci d'avance

++

Creepy
 

JMV

XLDnaute Nouveau
Salut,

Ci-dessous une petite macro qui devrait t'aider, ej l'espère.
Bonne Soirée

Jean-Marc

Option Explicit
Dim Tri() As Integer

Sub Aléatoire(VMax As Integer)
'Macro crée le 16.03.2005 par JMV
'Cette macro distibue aléatoirement les nombres de 1 à 'VMax' dans 'Tri(I)' avec I=1...VMax
Dim I As Integer
Dim J As Integer
Dim Flag As Boolean
ReDim Tri(VMax) As Integer
'1) Initialisation
For I = 1 To VMax
Tri(I) = 0
Next I
'2) Premier tour
J = 1
Tri(1) = Int((VMax * Rnd) + 1)
'3) 2ème tour, 3ème ...
For I = 2 To VMax
Do
Tri(I) = Int((VMax * Rnd) + 1)
Flag = False
For J = 1 To I - 1
If Tri(I) = Tri(J) Then
Flag = True
Exit For
End If
Next J
Loop While Flag
Next I
End Sub
 

JMV

XLDnaute Nouveau
Salut,

Ci-dessous une petite macro qui devrait t'aider, ej l'espère.
Bonne Soirée

Jean-Marc

Option Explicit
Dim Tri() As Integer

Sub Aléatoire(VMax As Integer)
'Macro crée le 16.03.2005 par JMV
'Cette macro distibue aléatoirement les nombres de 1 à 'VMax' dans 'Tri(I)' avec I=1...VMax
Dim I As Integer
Dim J As Integer
Dim Flag As Boolean
ReDim Tri(VMax) As Integer
'1) Initialisation
For I = 1 To VMax
Tri(I) = 0
Next I
'2) Premier tour
J = 1
Tri(1) = Int((VMax * Rnd) + 1)
'3) 2ème tour, 3ème ...
For I = 2 To VMax
Do
Tri(I) = Int((VMax * Rnd) + 1)
Flag = False
For J = 1 To I - 1
If Tri(I) = Tri(J) Then
Flag = True
Exit For
End If
Next J
Loop While Flag
Next I
End Sub
 

PascalXLD

XLDnaute Barbatruc
Modérateur
Bonjour

Voici une autre façon de procéder

Sub toto()

Dim imagecreepy(1 To 9)

Dim a As Byte, b As Byte, MaValeur As Byte

For a = 1 To 9
tir:
Randomize
MaValeur = Int((9 * Rnd) + 1)
For b = 1 To a - 1
If MaValeur = imagecreepy(b) Then GoTo tir
Next
imagecreepy(a) = MaValeur
Next

End Sub

Tu as donc une variable imagecreepy avec les chiffres de 1 à 9 classés de façon aléatoire.

Tu n'as plus qu'à dire

ton control img x = 'image' & imagecreepy(x) & '.bmp'

Bonne journée
 

Statistiques des forums

Discussions
312 499
Messages
2 088 999
Membres
104 001
dernier inscrit
dessinbecm