XL 2019 grille aléatoire sans doublon

Gaborn

XLDnaute Nouveau
je crée une grille aléatoire sans doublon
j'arrive avec les doublons mais sans c'est le problème
voici mon script d'origine
Sub main()
For ligne = 2 To 51
For colonne = 2 To 36
If Cells(ligne, colonne) <> 0 Then Cells(ligne, colonne) = 1727
Next colonne
Next ligne
For ligne = 2 To 51
For colonne = 2 To 36
Valeur = Int((1726 * Rnd) + 1)
If Cells(ligne, colonne) <> 0 Then Cells(ligne, colonne) = Valeur
Next colonne
Next ligne
End Sub
Merci de votre aide
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Un exemple de code utilisant le module de classe ListeAléat :
VB:
Sub Main()
   Dim LAt As New ListeAléat, T(), A&, L&, C&, P&
   T = Cells(2, 2).Resize(50, 35).Value
   Randomize
   LAt.Init 1726
   For L = 1 To 50: For C = 1 To 35
      If T(L, C) <> 0 Then P = P + 1: A = LAt.Aléat(P) Else A = 0
      If A = 0 Then T(L, C) = Empty Else T(L, C) = A
      Next C, L
   Cells(2, 2).Resize(50, 35).Value = T
   End Sub
Un autre code (ça dépend de ce que vous aviez voulu faire) :
VB:
Sub Main()
   Dim LAt As New ListeAléat, T(), L&, C&, P&, A&
   ReDim T(1 To 50, 1 To 35)
   Randomize
   LAt.Init 50 * 35
   For L = 1 To 50: For C = 1 To 35
      P = P + 1: A = LAt.Aléat(P): If A > 1726 Then A = 0
      If A = 0 Then T(L, C) = Empty Else T(L, C) = A
      Next C, L
   Cells(2, 2).Resize(50, 35).Value = T
   End Sub
Un autre encore :
Code:
Sub Main()
   Dim LAt As New ListeAléat, T(), L&, C&, P&, A&
   ReDim T(1 To 50, 1 To 35)
   Randomize
   LAt.Init 1726
   For L = 1 To 50: For C = 1 To 35
      P = P + 1: A = LAt.Aléat(P)
      If A = 0 Then Exit For
      T(L, C) = A
      Next C, L
   Cells(2, 2).Resize(50, 35).Value = T
   End Sub
 

Pièces jointes

  • ListeAléatGaborn.xlsm
    36.7 KB · Affichages: 5
Dernière édition:

Discussions similaires

Réponses
2
Affichages
329

Statistiques des forums

Discussions
315 093
Messages
2 116 139
Membres
112 669
dernier inscrit
Guigui2502