Pavé numerique à chiffre aléatoire:

nacimem Messages postés 4 Date d'inscription samedi 2 avril 2005 Statut Membre Dernière intervention 27 décembre 2009 - 22 nov. 2008 à 18:42
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 - 22 nov. 2008 à 19:41
Bonsoir à tous, voila je suis actuelement en 1er année de bts informatique de gestion et je programme actuellement en vba, je dois effectuer un programme me permettant de généré un pavé numérique avec des boutons au valeurs de 0 à 9 et cela dans un ordre aléatoires.
J'ai réussi à le faire cependant mon prof n'accepte pas ma méthod pretextant elle est beaucoup trop longue et que si je devais utilisé  plus de neuf bouton je devrais faire 99 teste, voici ma méthode:

Randomize
boutonrnd0 = Int((Rnd * 10))
boutonrnd1 = Int((Rnd * 10))
boutonrnd2 = Int((Rnd * 10))
boutonrnd3 = Int((Rnd * 10))
boutonrnd4 = Int((Rnd * 10))
boutonrnd5 = Int((Rnd * 10))
boutonrnd6 = Int((Rnd * 10))
boutonrnd7 = Int((Rnd * 10))
boutonrnd8 = Int((Rnd * 10))
boutonrnd9 = Int((Rnd * 10))


While boutonrnd0 boutonrnd1 Or boutonrnd0 boutonrnd2 Or boutonrnd0 = boutonrnd3 Or boutonrnd0 = boutonrnd4 Or boutonrnd0 = boutonrnd5 Or boutonrnd0 = boutonrnd6 Or boutonrnd0 = boutonrnd7 Or boutonrnd0 = boutonrnd8 Or boutonrnd0 = boutonrnd9
boutonrnd0 = Int((Rnd * 10))
Wend
While boutonrnd1 boutonrnd0 Or boutonrnd1 boutonrnd2 Or boutonrnd1 = boutonrnd3 Or boutonrnd1 = boutonrnd4 Or boutonrnd1 = boutonrnd5 Or boutonrnd1 = boutonrnd6 Or boutonrnd1 = boutonrnd7 Or boutonrnd1 = boutonrnd8 Or boutonrnd1 = boutonrnd9
boutonrnd1 = Int((Rnd * 10))
Wend
While boutonrnd2 boutonrnd0 Or boutonrnd2 boutonrnd1 Or boutonrnd2 = boutonrnd3 Or boutonrnd2 = boutonrnd4 Or boutonrnd2 = boutonrnd5 Or boutonrnd2 = boutonrnd6 Or boutonrnd2 = boutonrnd7 Or boutonrnd2 = boutonrnd8 Or boutonrnd2 = boutonrnd9
boutonrnd2 = Int((Rnd * 10))
Wend
While boutonrnd3 boutonrnd0 Or boutonrnd3 boutonrnd1 Or boutonrnd3 = boutonrnd2 Or boutonrnd3 = boutonrnd4 Or boutonrnd3 = boutonrnd5 Or boutonrnd3 = boutonrnd6 Or boutonrnd3 = boutonrnd7 Or boutonrnd3 = boutonrnd8 Or boutonrnd3 = boutonrnd9
boutonrnd3 = Int((Rnd * 10))
Wend
While boutonrnd4 boutonrnd0 Or boutonrnd4 boutonrnd1 Or boutonrnd4 = boutonrnd2 Or boutonrnd4 = boutonrnd3 Or boutonrnd4 = boutonrnd5 Or boutonrnd4 = boutonrnd6 Or boutonrnd4 = boutonrnd7 Or boutonrnd4 = boutonrnd8 Or boutonrnd4 = boutonrnd9
boutonrnd4 = Int((Rnd * 10))
Wend
While boutonrnd5 boutonrnd0 Or boutonrnd5 boutonrnd1 Or boutonrnd5 = boutonrnd2 Or boutonrnd5 = boutonrnd3 Or boutonrnd5 = boutonrnd4 Or boutonrnd5 = boutonrnd6 Or boutonrnd5 = boutonrnd7 Or boutonrnd5 = boutonrnd8 Or boutonrnd5 = boutonrnd9
boutonrnd5 = Int((Rnd * 10))
Wend
While boutonrnd6 boutonrnd0 Or boutonrnd6 boutonrnd1 Or boutonrnd6 = boutonrnd2 Or boutonrnd6 = boutonrnd3 Or boutonrnd6 = boutonrnd4 Or boutonrnd6 = boutonrnd5 Or boutonrnd6 = boutonrnd7 Or boutonrnd6 = boutonrnd8 Or boutonrnd6 = boutonrnd9
boutonrnd6 = Int((Rnd * 10))
Wend
While boutonrnd7 boutonrnd0 Or boutonrnd7 boutonrnd1 Or boutonrnd7 = boutonrnd2 Or boutonrnd7 = boutonrnd3 Or boutonrnd7 = boutonrnd4 Or boutonrnd7 = boutonrnd5 Or boutonrnd7 = boutonrnd6 Or boutonrnd7 = boutonrnd8 Or boutonrnd7 = boutonrnd9
boutonrnd7 = Int((Rnd * 10))
Wend
While boutonrnd8 boutonrnd0 Or boutonrnd8 boutonrnd1 Or boutonrnd8 = boutonrnd2 Or boutonrnd8 = boutonrnd3 Or boutonrnd8 = boutonrnd4 Or boutonrnd8 = boutonrnd5 Or boutonrnd8 = boutonrnd6 Or boutonrnd8 = boutonrnd7 Or boutonrnd8 = boutonrnd9
boutonrnd8 = Int((Rnd * 10))
Wend
While boutonrnd9 boutonrnd0 Or boutonrnd9 boutonrnd1 Or boutonrnd9 = boutonrnd2 Or boutonrnd9 = boutonrnd3 Or boutonrnd9 = boutonrnd4 Or boutonrnd9 = boutonrnd5 Or boutonrnd9 = boutonrnd6 Or boutonrnd9 = boutonrnd7 Or boutonrnd9 = boutonrnd8
boutonrnd9 = Int((Rnd * 10))
Wend

Bouton0.Caption = boutonrnd0
Bouton1.Caption = boutonrnd1
Bouton2.Caption = boutonrnd2
Bouton3.Caption = boutonrnd3
Bouton4.Caption = boutonrnd4
Bouton5.Caption = boutonrnd5
Bouton6.Caption = boutonrnd6
Bouton7.Caption = boutonrnd7
Bouton8.Caption = boutonrnd8
Bouton9.Caption = boutonrnd9

Voila le problème c'est donc que je fais 10 boucle pour être sur qu'il n'y aura pas de doublons dans mes boutons et c'est cela que mon prof n'aime pas, pensez vous qu'il y'aurai une autre solution que ce que j'ai fait?
Merci pour votre aide et bonne soiré à tous.

1 réponse

jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 8
22 nov. 2008 à 19:41
Bonsoir,

Regarde, analyse, puis sers-toi de ce que fait ceci (exemple parmi d'autres)

  Const nbparmi = 10 'ici le nombre total
  Const nbatirer = 10  'ici le nombre de numéros aléatoires à sortir du nombre total
  Randomize
  Dim tabl(nbparmi - 1) As Integer, i As Integer, a As String, ou As Integer
  For i = 0 To nbparmi - 1
    tabl(i) = i
  Next
  For i = 0 To nbatirer - 1
    ou = Int(((nbparmi - i) * Rnd))
    a = a & vbCrLf & tabl(ou)
     tabl(ou) = tabl(nbparmi - 1 - i)
  Next
  MsgBox a
0
Rejoignez-nous