Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Tirage de tombola excel

Lulu62

XLDnaute Nouveau
Bonjour,

Pour un projet philanthropique, je réalise une tombola et je souhaiterais faire le tirage au sort avec excel.
Malheureusement je ne m'y connais pas trop et je galère un peu.
Pour ma tombola je vends 300 et je fais gagner 150 tickets.
Grâce un programme VBA, j'ai pu réaliser des tirages au sort.
Maintenant je souhaiterais faire en sorte que en face de chaque numéro de ticket ça marque s'il est gagnant ou perdant en fonction du tirage au sort qui a été réalisé.
J'ai essayé avec un SI mais cela ne fonctionne pas.
Quelqu'un pourrait-il m'aider ?
 

Pièces jointes

  • Classeur1.xlsx
    13.7 KB · Affichages: 27

Lulu62

XLDnaute Nouveau
Bonjour,

Suite à mon tirage au sort, j'ai déjà mis quelques lots dans mon tableur. J'aimerais, s'il est possible, que les lots soit également tirés au sort mais je ne vois pas vraiment comment faire.
Est ce que quelqu'un saurait ?

Merci
 

Pièces jointes

  • Classeur1.xlsx
    22.4 KB · Affichages: 37

Dranreb

XLDnaute Barbatruc
Bonjour.
Dans le module de l'objet Worksheet de la feuille :
VB:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   Dim Tablo(1 To 46, 1 To 25), TLots(), L As Long, C As Long, TAléa() As Long, P As Long, N As Long
   If Target.Column < 22 Then Exit Sub
   If MsgBox("Un nouveaau tirage va être effectué", vbOKCancel + vbInformation, _
      "Tombola") = vbCancel Then Exit Sub
   TLots = Me.[D56].Resize(Me.[D1056].End(xlUp).Row - 55).Value
   ReDim TAléa(1 To 700 - 400)
   Randomize
   For P = 1 To UBound(TAléa): TAléa(P) = P: Next P
   For P = UBound(TAléa) To 2 Step -1
      C = Int(Rnd * P) + 1: N = TAléa(C): TAléa(C) = TAléa(P): TAléa(P) = N
      Next P
   For P = 1 To UBound(TAléa)
      N = TAléa(P)
      L = (N - 1) Mod UBound(Tablo, 1) + 1
      C = ((N - 1) \ UBound(Tablo, 1)) * 3 + 1
      Tablo(L, C) = N + 400 ' Corrigé
      If P <= UBound(TLots, 1) Then
         Tablo(L, C + 1) = "Gagné": Tablo(L, C + 2) = TLots(P, 1)
         L = (P - 1) Mod UBound(Tablo, 1) + 1
         C = (P - 1) \ UBound(Tablo, 1) + 22
         Tablo(L, C) = N + 400 ' Corrigé
      Else: Tablo(L, C + 1) = "Perdu": End If: Next P
   Me.[A2:Y47].Value = Tablo
   End Sub
Attention j'ai oublié de rajouter à la sortie les 400 aux numéros, raisonnés à partir de 1 dans le code.
 
Dernière édition:

Lulu62

XLDnaute Nouveau
Bonjour,
Je ne m'y connais pas très bien dans tout ce qui est VBA et macro du coup je comprends pas vraiment à quoi correspond ton programme.
Est-ce qu'il correspond au tirage des numéros gagnants pour dire au 300 numéros s'ils sont gagnants ou perdants ou si c'est pour le tirage des lots au sort ?
 

Dranreb

XLDnaute Barbatruc
Bonjour.
Il fait les deux en même temps, vu que le nombre de gagnants ne saurait être qu'égal au nombre de lots à gagner, il me semble.
Le code étant mis dans le module de l'objet Worksheet représentant la feuille concernée, le tirage est proposé si on sélectionne une cellule au delà des groupes de 3 colonnes. mais on pourrait aussi le faire au clic sur un bouton ActiveX.
Remarque : Les numéros gagnants pourraient aussi être mis en face de ces lots, justement.
Et j'ai récemment lu quelque part que, légalement, un talon devait être gardé avec le nom de la personne ayant acheté le ticket.
Cela pourrait se gérer aussi, y compris de ne tirer au sort que les numéros des tickets effectivement achetés …
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…