Microsoft 365 générateur de chiffres

Michest94

XLDnaute Occasionnel
Bonjour le forum :)

Je vous sollicite par rapport un générateur de chiffres (voir mon fichier joint pour info.)
Fichier exemple mis en condition ligne et colonne pour refaire à l'identique la proposition éventuelle faite.
Merci à vous pour votre aide
Michest94
 

Pièces jointes

  • Classeur1.xlsx
    13.2 KB · Affichages: 24
Solution
C'était apparemment juste la formule pour déduire la ligne de sortie à partir du nombre de numéros du tirage qui vous posait problème. Écrivons le avec une variable L, ce sera plus simple
VB:
Sub Tirage()
   Dim TSrc(), LAt As New ListeAléat, TJn() As String, N As Integer, P As Byte, L As Long
   TSrc = ActiveSheet.[q14:q19].Value
   Randomize
   LAt.Init UBound(TSrc)
   L = 11
   For N = 5 To 2 Step -1
      LAt.Désordre
      ReDim TJn(1 To N)
      For P = 1 To N: TJn(P) = TSrc(LAt.Aléat(P), 1): Next P
      L = L + 2
      ActiveSheet.Cells(L, "S").Value = "'" & Join(TJn, "-")
      Next N
   End Sub

Michest94

XLDnaute Occasionnel
Bonjour à tous

Avec une fonction personnalisée trouvée sur

JHA
Re,

Parfait ! juste un détails dans la série généré il ne faut pas 2 fois le même numéro.
Principalement dans le tirage 5
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Des dispositifs dans ce classeur

Édition: En munissant votre classeur du module de classe ListeAléat :
 

Pièces jointes

  • ListeAléat.xlsm
    371.7 KB · Affichages: 17
  • Temp.xlsm
    31.2 KB · Affichages: 14
Dernière édition:

Michest94

XLDnaute Occasionnel
Bonjour à tous,

Après plusieurs essais sur les boutons des tirages, il n'y a pas de doublon dans les listes.

JHA
Effectivement ce nouveau fichier est plus cohérent pour moi.
En revanche comme beaucoup de fois à chaque demande je n'arrive pas à greffer à l'identique de du fichier exemple.
je voulais le positionner en P13:T19
1629033030788.png

une galère pas possible je pense le garde en fichier annexe.
Merci beaucoup en tous les cas.
 

Michest94

XLDnaute Occasionnel
Bonjour.
Des dispositifs dans ce classeur

Édition: En munissant votre classeur du module de classe ListeAléat :
Re,
Votre solution proposé me plait plutôt bien, par contre mon niveau vba est plutôt tendance néophyte si cela ne vous dérange pas de me l'adapter sur mon fichier source j'en serais ravis.
A savoir que mon fichier source est un fichier à la base de gestion multi comptes ( rien à cacher ) ou bien entendu la partie vba n'est pas de moi.
J'ai voulu créer en annexe une feuille de jeux ( avec modération bien sur et control excel ) qui aurais du être indépendante après réflexion sur un nouveau classeur.
Afin de la dissocier du classeur multi comptes, est il est possible de me créer un nouveau classeur pmu à l'identique de la feuille en y mettant votre code vba pour le petit générateur de chiffres?
Merci beaucoup pour votre retour et aide.
 

Pièces jointes

  • gestion-multicomptes-vers-ph-10-2 - Copie1.xlsm
    422.8 KB · Affichages: 23

Dranreb

XLDnaute Barbatruc
C'était apparemment juste la formule pour déduire la ligne de sortie à partir du nombre de numéros du tirage qui vous posait problème. Écrivons le avec une variable L, ce sera plus simple
VB:
Sub Tirage()
   Dim TSrc(), LAt As New ListeAléat, TJn() As String, N As Integer, P As Byte, L As Long
   TSrc = ActiveSheet.[q14:q19].Value
   Randomize
   LAt.Init UBound(TSrc)
   L = 11
   For N = 5 To 2 Step -1
      LAt.Désordre
      ReDim TJn(1 To N)
      For P = 1 To N: TJn(P) = TSrc(LAt.Aléat(P), 1): Next P
      L = L + 2
      ActiveSheet.Cells(L, "S").Value = "'" & Join(TJn, "-")
      Next N
   End Sub
 

patricktoulon

XLDnaute Barbatruc
Bonjour
une petite fonction perso utilisable en mono cellule / matricielle
VB:
Function nbrealea(rng As range, mini, maxi)
    Dim tbl(), i, a, num
    ReDim tbl(1 To rng.Cells.Count)
    Do
        num = Round(Rnd * maxi)
        x = Application.IfError(Application.Match(num, tbl, 0), 0)
        If num > mini And x = 0 Then a = a + 1: tbl(a) = num
    Loop While a < UBound(tbl)
    With Application
        nbrealea = IIf(.ThisCell.Offset(1).Formula = .ThisCell.Formula, .Transpose(tbl), tbl)
    End With
End Function

en A1:A10 je met
en vertical
= nbrealea(A1:A10;44;100)


en horizontal
en C5:F5
=nbrealea(C5:F5;44;100)


et je valide en matricielle CTRL+ MAJ + ENTREE
44
c'est le plus petit numero et 100 le plus grand

dans une seule cellule je met exemple en C2
=nbrealea(C2;30;50) et
je valide sans matricielle
 

Michest94

XLDnaute Occasionnel
C'était apparemment juste la formule pour déduire la ligne de sortie à partir du nombre de numéros du tirage qui vous posait problème. Écrivons le avec une variable L, ce sera plus simple
VB:
Sub Tirage()
   Dim TSrc(), LAt As New ListeAléat, TJn() As String, N As Integer, P As Byte, L As Long
   TSrc = ActiveSheet.[q14:q19].Value
   Randomize
   LAt.Init UBound(TSrc)
   L = 11
   For N = 5 To 2 Step -1
      LAt.Désordre
      ReDim TJn(1 To N)
      For P = 1 To N: TJn(P) = TSrc(LAt.Aléat(P), 1): Next P
      L = L + 2
      ActiveSheet.Cells(L, "S").Value = "'" & Join(TJn, "-")
      Next N
   End Sub
Merci beaucoup tout fonctionne impeccable
1629049577898.png

Y'a plus qu'a ...
 

Discussions similaires

Réponses
16
Affichages
657

Statistiques des forums

Discussions
312 104
Messages
2 085 330
Membres
102 862
dernier inscrit
Emma35400