Tirage aléatoire avec création d'une liste

nounou2011

XLDnaute Nouveau
Bonjour,
Mon besoin :
Je dispose d'une liste de 1200 noms environ qui se trouve dans la feuille "nom". (j'ai mis quelques noms fictifs pour effectuer le test)

Dans une autre feuille "tirage au sort", je souhaite pouvoir en appuyant sur un bouton (macro) qui se trouvera en G2 (par exemple) :

  • Générer un nombre aléatoire qui s'affichera en A 2
  • Ce nombre fera référence à un nom qui devra s'afficher dans la colonne en C5
Puis à chaque fois que je génère un nombre le nom s'affiche sous le précédent soit C6 , C7…

Merci d'avance pour votre aide
 

Pièces jointes

  • ALEATOIRE.xlsx
    9.2 KB · Affichages: 45

nounou2011

XLDnaute Nouveau
Salut,

Une idée :
bonjour
alors l'idée est bien cela mais ca ne fonctionne pas.
en effet, j'ai essayé avec ma liste de 1200 noms et le chiffre tiré au sort ne correspond pas.
pour etre sur, j'ai remplacé les noms par des chiffres (ce qui veut dire que dans la colonne nom, les colonnes A et B sont identiques) et bien lors du tirage si c'est le numéro 890 qui sort je dois avoir 890 qui s'affiche en C 5 et ce n'est pas le cas.
 

Hieu

XLDnaute Impliqué
Un nouvel essai :
VB:
Sub mlk()
Set WF = WorksheetFunction
Set ts = Sheets("tirage au sort")
Set nom = Sheets("nom")
Randomize

ts.Range("a2") = Int(WF.CountA(nom.Range("a:a")) * Rnd) + 1

ts.Range("c5").Offset(WF.CountA(ts.Range("c:c")) - 1, 0) = _
    WF.Index(nom.Range("b:b"), WF.Match(ts.Range("a2"), nom.Range("a:a"), 0))
End Sub
 

Pièces jointes

  • ALEATOIRE_v1.xlsm
    19.4 KB · Affichages: 54

nounou2011

XLDnaute Nouveau
Merci hieu, je viens de tester rapidement et cela à l'air de fonctionner.

Serait-il possible de pousser un peu plus ce fichier avec des besoins supplémentaires
1 - avoir un bouton 2 qui permet de faire un tirage au sort à partir d'un nouvel onglet "nommer noms2" et les noms s'affichent en colonne D
2 - avoir un bouton 3 qui permet de faire un tirage au sort à partir d'un nouvel onglet "nommer noms3" et les noms s'affichent en colonne E
3 - avoir un bouton 4 qui permet de faire un tirage au sort à partir d'un nouvel onglet "nommer noms4" et les noms s'affichent en colonne F
4 - avoir un bouton 5 qui permet de faire un tirage au sort à partir d'un nouvel onglet "nommer noms5" et les noms s'affichent en colonne G

Enfin avoir un bouton à coté de chaque bouton (1,2,3...) qui permet d'effacer la colonne correspondante.

Merci par avance.
 

Hieu

XLDnaute Impliqué
Le code avec des commentaires ;
Si tu as besoin d'aide, je suis bien sûr disponible !

VB:
Sub mlk()
Set WF = WorksheetFunction    ' les set te permettent de réécrire quelque chose de long via un mot "plus court"
Set ts = Sheets("tirage au sort")  ' le WorksheetFunction te permet d'appeler des fonctions d'excel
Set nom = Sheets("nom")           ' sheets("toto") pour appeler la feuiller "toto"
Randomize                                  ' te permet de réinitialier la valeur "random" Rnd

ts.Range("a2") = Int(WF.CountA(nom.Range("a:a")) * Rnd) + 1
     ' CountA correspond à la fonction nbval

ts.Range("c5").Offset(WF.CountA(ts.Range("c:c")) - 1, 0) = _
    WF.Index(nom.Range("b:b"), WF.Match(ts.Range("a2"), nom.Range("a:a"), 0))
    ' Index pour Index, et Match pour la fonction equiv
End Sub
 
Dernière édition:

nounou2011

XLDnaute Nouveau
Je n'y arrive pas.

J'ai préparé ce que je veux, c'est-à-dire faire un tirage au sort et que le nom qui vient de la feuille "nom" sort en A2 s'affiche en C5 puis C6… (le bouton tirage 1 fonctionne). Ensuite pour tirage 2, il faut prendre la liste se trouvant dans nom1, puis tirage3, il faudra prendre la liste en nom2 etc…

Une fois le tirage effectué, je copie (bouton copie) le résultat et il s'affiche dans la "Resultat". Puis j'efface le tirage (bouton effacer) et je recommence en utilisant le bouton "tirage2"

Le problème c'est que le tirage 2 et les suivants ne fonctionnent pas.

Pour le bouton Tirage 2, j'ai copié le code de Tirage1 et j'ai remplacé le nom de la feuille mais j'ai un bug 424.
 

Pièces jointes

  • ALEATOIRE_v2.xlsm
    60.1 KB · Affichages: 53

Hieu

XLDnaute Impliqué
Salut,

J'ai corrigé ton code, apporté un peu de clarté, dans les subroutines.

En regardant tes feuilles, j'ai vu qu'il fallait ajouter un nombre aleatoire entre bornes; j'ai donc ajouté une fonction "alea"
qui reprend le fonction excel alea.entre.bornes
VB:
Function Alea(B1 As Double, B2 As Double) As Long
' alea entre B1 et B2
    Randomize
    Alea = Int((B2 - B1 + 1) * Rnd + B1)
End Function
Le code est piqué de cette discussion : https://www.excel-downloads.com/threads/nombre-aleatoire-entre-2-nombres.110432/

Tu as donc maintenant le code qui rentre dans la feuille "nom1"

Je te laisse faire Tirage3, Tirage4, et Tirage5.

Si tu as des questions, reviens vers moi.
On peut simplifier le code, mais dans un premier temps, je pense qu'il est intéressant de copier coller le code pour la compréhension.
 

Pièces jointes

  • ALEATOIRE_v3.xlsm
    62.4 KB · Affichages: 54

nounou2011

XLDnaute Nouveau
alors j'ai donc refais le fichier en faisant des copié coller car celui que tu as revu n'allait pas (notamment le tirage 1, il y avait un bug, j'ai réaffecté la macro) et sur le 2, le chiffre arrivait dans la colonne d.

Par ailleurs, les boutons copié ne fonctionnent pas tous.

De plus, j'ai pas compris pourquoi tu as rajouté "alea" car le 1er fichier fonctionnait. est-ce qu'il ne va pas y avoir un risque d'avoir un doublon ? (sachant que je vais tirer environ noms par feuille)

Je vais le tester demain avec les vrais noms et je verrai si cela fonctionne.

Merci pour ton aide
 

Pièces jointes

  • ALEATOIRE_v4.xlsm
    65.8 KB · Affichages: 51

phlaurent55

Nous a quittés en 2020
Repose en paix
Bonjour à tous,

voir fichier joint
j'ai légèrement simplifié en remplaçant toutes les procédures de tirage aléatoire par une seule procédure
en bonus, un petit test permettant d'éviter les tirages en double

je n'ai fais aucune modif concernant les autres boutons

à+
Philippe
 

Pièces jointes

  • 111.xlsm
    64 KB · Affichages: 72

Discussions similaires

Statistiques des forums

Discussions
312 103
Messages
2 085 325
Membres
102 862
dernier inscrit
Emma35400