Créer un script ou une macro pour le tirage aléatoire des chevaux du Quinté+

guillaume7684

XLDnaute Nouveau
Bonsoir,

Voilà ce que je cherche à faire avec excel.

Je suis un turfiste et j'aimerais avoir un tirage aléatoire des chevaux, mais un tirage qui prenne en compte les cotes des chevaux.

Par exemple, dans une course il y a 5 partants, avec les cotes suivantes:
Cheval 1 = 5/1
Cheval 2 = 26/1
Cheval 3 = 3/1
Cheval 4 = 95/1
Cheval 5 = 12/1

D'après ces cotes, l'ordre d'arrivée probable serait: 3-1-5-2-4
Vu que le cheval 3 avec une cote de 3/1 à beaucoup plus de chances d'arrivée en tête que le cheval 4 avec une cote de 95/1.

En fait il faudrait faire un tirage au sort en utilisant un coeff du genre:
Le cheval 1 (100/5 = 20) coeff = 20
Le cheval 2: (100/26 = 3,84)
Le cheval 3: (100/3 = 33,33)
Le cheval 4: (100/95 = 1,05)
Le cheval 5: (100/12 = 8,33)

Voilà, donc je voudrais à chaque course entrer les cotes en colonne A, exécuter une macro,et là il me sortirait 5 chevaux.

Merci à celui qui arrivera à faire ça, car cette macro me rendrait grand service.:)
 

Pierrot93

XLDnaute Barbatruc
Re : Créer un script ou une macro pour le tirage aléatoire des chevaux du Quinté+

Bonjour Guillaume,

Regarde le code ci-dessous, les numéros des chevaux en colonne A, leurs cotes en colonne B, te donne 5 chevaux en colonne C, à adapter à ton besoin...

Code:
Option Explicit
Sub test()
Dim i As Byte, j As Byte, c As New Collection, c2 As New Collection
For i = 1 To Range("A65536").End(xlUp).Row
    For j = 1 To CByte(100 / Cells(i, 2).Value)
        c.Add Cells(i, 1).Value
    Next j
Next i
Randomize
Do While c2.Count < 5
    i = Int(c.Count * Rnd) + 1
    On Error Resume Next
    c2.Add c(i), CStr(c(i))
    On Error GoTo 0
Loop
For i = 1 To 5
    Cells(i, 3).Value = c2(i)
Next i
End Sub

bonne journée
@+
 

ROGER2327

XLDnaute Barbatruc
Re : Créer un script ou une macro pour le tirage aléatoire des chevaux du Quinté+

Bonjour guillaume7684, Pierrot93
Il me semble que le code de Pierrot93 ne répond qu'approximativement à la question car la ligne
Code:
[COLOR="DarkSlateGray"][B]    For j = 1 To CByte(100 / Cells(i, 2).Value)
[/B][/COLOR]
donne, par exemple, le même résultat pour les cotes de 23 à 28 contre 1. Autrement dit la probabilité d'être à l'arrivée est considérée comme identique pour les cotes de 23 à 28 contre 1.
De la même manière, les cotes de 67 à 199 contre 1 sont considérées comme identiques.
Ne connaissant rien aux courses, j'ignore si cette remarque est importante. Je la fais uniquement d'un point de vue mathématique. Au cas où il conviendrait de ne pas confondre les cotes, je propose ce code, mis en œuvre dans le classeur joint.
Code:
[COLOR="DarkSlateGray"][B]Private Sub toto()
Dim i As Long, tmp1 As Double, tmp2 As Double, Q As Long
Dim pL As Long, pC As Long, dL As Long, dC As Long, oDat, sDat
Dim oCol As New Collection
   With [A2]
      If Cells(Rows.Count, .Column).End(xlUp).Cells(1, 1).Row < .Row Then GoTo E
      oDat = Range(.Cells.Offset(-1, 2), Cells(Rows.Count, .Column).End(xlUp)).Value
      pL = LBound(oDat, 1) + 1
      pC = LBound(oDat, 2)
      dL = UBound(oDat, 1)
      dC = UBound(oDat, 2)
      oDat(pL - 1, dC) = 0
      On Error GoTo c
      Q = (dL - pL + 6 - Abs(dL - pL - 4)) / 2
      For i = pL To dL
         tmp1 = tmp1 + 1 / oDat(i, dC - 1)
         oDat(i, dC) = tmp1
      Next i
      On Error GoTo 0
      Randomize
      Do While oCol.Count < Q
         tmp2 = tmp1 * Rnd
         For i = pL To dL
            If oDat(i - 1, dC) <= tmp2 And tmp2 < oDat(i, dC) Then
               On Error Resume Next
               oCol.Add oDat(i, pC), CStr(oDat(i, pC))
               Exit For
            End If
         Next i
      Loop
      ReDim sDat(1 To dL - pL + 1, 1 To 1)
      For i = 1 To 5
         sDat(i, 1) = oCol(i)
      Next i
      Range(.Cells, Cells(Rows.Count, .Column).End(xlUp)).Offset(0, 2).Value = sDat
E: End With
Exit Sub
c: MsgBox "Cote incorrecte (N° " & oDat(i, pC) & ")."
   Resume E
End Sub[/B][/COLOR]
ROGER2327
#2608
 

Pièces jointes

  • Tirage_2608.xls
    16.5 KB · Affichages: 408

ROGER2327

XLDnaute Barbatruc
Re : Créer un script ou une macro pour le tirage aléatoire des chevaux du Quinté+

Re...
Bonjour,

perso, je me suis borné à traduire la demande



@+
Je ne crois pas. Dans l'exemple de notre ami (5 cotes : 5, 26, 3, 95, 12 associés aux n° 1, 2, 3, 4, 5) il souhaite pondérer le tirage avec des coefficients 100/cote, soit :
20 ; 3,846153846 ; 33,33333333 ; 1,052631579 ; 8,333333333.
Pour faire cela, vous créez une collection c comportant 20 fois 1, 4 fois 2, 33 fois 3, 1 fois 4 et 8 fois 5, soit en tout 66 valeurs. Puis vous faites un tirage aléatoire dans cette collection, jusqu'à obtenir cinq numéros différents.
Ce faisant, les coefficients que vous associez aux cotes ne sont pas :
20 ; 3,846153846 ; 33,33333333 ; 1,052631579 ; 8,333333333
mais :
20,17134912 ; 4,034269824 ; 33,28272605 ; 1,008567456 ; 8,068539647.
Ou, si l'on se ramène aux cotes :
4,957526609 ; 24,78763305 ; 3,004561581 ; 99,15053218 ; 12,39381652
et non :
5, 26, 3, 95, 12.
Mais, je le répète, je ne connais rien aux courses, et il se peut que ces écarts n'aient aucune importance.
ROGER2327
#2611
 
Dernière édition:

guillaume7684

XLDnaute Nouveau
Re : Créer un script ou une macro pour le tirage aléatoire des chevaux du Quinté+

Bonsoir Roger2327 et Pierrot93,

Tout d'abord merci pour vos réponses, désolé de ne pas vous avoir répondu avant mais j'ai oublié de cocher le suivi de ce post !!!

@Roger2327, je n'ai pas excel mais openoffice, pourrais-tu me l'enregistrer en .odt car je n'arrive pas à executer la macro, quand je clique sur "tirage" rien ne se passe.

Voilà le message que j'ai quand j'ouvre ton fichier avec openoffice:
http://img693.imageshack.us/i/11548008.jpg/

Merci.
 
Dernière édition:

jeanpierre

Nous a quitté
Repose en paix
Re : Créer un script ou une macro pour le tirage aléatoire des chevaux du Quinté+

Bonsoir guillaume7684, Pierrot, ROGER,

Pas la peine de te prendre la tête, le langage macro Excel et celui d'OpenOffice sont si différents que même l'enregistrement en .odt ne changera rien.

Il te faut prendre les macros données sur ce fil et retraduire dans le langage d'OOo.

Du boulot en perspective.

Bonne soirée.

Jean-Pierre
 

ROGER2327

XLDnaute Barbatruc
Re : Créer un script ou une macro pour le tirage aléatoire des chevaux du Quinté+

Re...
Bonsoir Roger2327 et Pierrot93,

Tout d'abord merci pour vos réponses, désolé de ne pas vous avoir répondu avant mais j'ai oublié de cocher le suivi de ce post !!!

@Roger2327, je n'ai pas excel mais openoffice, pourrais-tu me l'enregistrer en .odt car je n'arrive pas à executer la macro, quand je clique sur "tirage" rien ne se passe.

Voilà le message que j'ai quand j'ouvre ton fichier avec openoffice:
http://img693.imageshack.us/i/11548008.jpg/

Merci.
Excellent, le gag !​
ROGER2327
#2633
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 505
Messages
2 089 071
Membres
104 020
dernier inscrit
Mzghal