Résultat d'un tirage aléatoire avec condition

drareg78

XLDnaute Junior
Bonjour le forum.

Je viens de passer un long moment à rechercher dans les nombreuses "discussions" ayant déjà abordées le sujet sans trouver la solution à mon Pb.
Je cherche a effectuer un tirage au sort, naturellement aléatoire, mais qui exclurait la possibilité que deux équipes du même club puissent être amenées à se rencontrer.

Voir le petit fichier en annexe. La présentation du résultat pouvant être proposée sous une des deux formules proposées.

La liste des équipes ne doit pas être limitée pas plus que le nombre de club

Merci par avance de votre aide
 

Pièces jointes

  • Draregtest.xls
    23 KB · Affichages: 160
  • Draregtest.xls
    23 KB · Affichages: 157
  • Draregtest.xls
    23 KB · Affichages: 160

drareg78

XLDnaute Junior
Re : Résultat d'un tirage aléatoire avec condition

Bonjour Solquagerius.

Les seules questions bêtes ne seraient que celles que l'on ose pas poser, ta question est donc pertinente.

Dans l'exposé de mon probleme il n'y a pas plusieurs fois la même équipe. Il y a seulement des équipes différentes qui pourraient appartenir au même club. Le problème consiste donc à ce que deux équipes appartenant au même club ne se rencontrent pas.

Merci de m'avoir lu et interrogé. A bientôt
 

solquagerius

XLDnaute Junior
Re : Résultat d'un tirage aléatoire avec condition

Voilà une macro qui devrait répondre au pb.
Le nombre de match est fonction du nombre de club (y'a n matchs pour n clubs). Et on peut rajouter plein de clubs et d'équipes :)

Solquagerius
 

Pièces jointes

  • Draregtest.xls
    37.5 KB · Affichages: 189
  • Draregtest.xls
    37.5 KB · Affichages: 183
  • Draregtest.xls
    37.5 KB · Affichages: 178

jp14

XLDnaute Barbatruc
Re : Résultat d'un tirage aléatoire avec condition

Bonjour à tous

Une autre solution par macro
Code:
Sub tirage()
Dim dl1 As Long ' dernière ligne
Dim nomfeuille1 As String
Dim val1 As Integer
Dim col As New Collection
nomfeuille1 = ActiveSheet.Name
Randomize
Dim a As String
With Sheets(nomfeuille1)
dl1 = .Cells(Rows.Count, 2).End(xlUp).Row
nbequ = .Range("b" & dl1)

For Each cell In .Range("f6:f" & dl1)


Do
    erreur = False
    val1 = Int((nbequ * Rnd))
    On Error GoTo suite
' vérification si même club
    If cell.Offset(0, -3) = cell.Offset(val1 + 5 - cell.Row, -3) Then
    a = cell.Row ' ligne pour tests
    Else
        col.Add val1, CStr(val1)
        If val1 = 0 Then val1 = 100
        If erreur = False Then Exit Do
    End If
Loop
    cell.Value = val1
Next cell
End With
Exit Sub
suite:
erreur = True
Resume Next
End Sub




Macro à supprimer une fois que le tirage est terminé.

A tester

JP
 
Dernière édition:

drareg78

XLDnaute Junior
Re : Résultat d'un tirage aléatoire avec condition

Solquagerius et JP14 Merci de votre aide

Pour Solquagerius la solution proposée ne répond pas parfaitement au Pb. Dans l'exemple founi par mon tableau, le fait qu'il y ait 100 Equipes ne peux donner que 50 parties et non 100. Je crains d'être responsable de cette incopréhension pour n'avoir pas été suffisament clair dans l'exposé, je m'en excuse.

La solution proposée par JP14 semble donner un excellent résultat je vais donc abuser en demandant s'il est possible en colonne G de faire aparaître le nom du club de manière à vérifier immédiatement à la lecture du tirage que deux équipes du même club ne se rencontrent pas. Si pas possible ce n'est pas trop grave.

En attendant, un grand merci à vous deux c'est trop sympa de votre part de m'avoir aidé.
 

jp14

XLDnaute Barbatruc
Re : Résultat d'un tirage aléatoire avec condition

Bonjour (re)

Ci joint le fichier avec la procédure modifiée.
J'ai rajouté une macro pour apporter une correction au cas ou deux noms identiques se suivait.

A tester
J'ai fait une macro pour vérifier si deux équipes ne faisaient pas le même match, mais le temps d'exécution est important quand on arrive en fin de tableau.


JP
 

Pièces jointes

  • Draregtestv.zip
    17.6 KB · Affichages: 83
  • Draregtestv.zip
    17.6 KB · Affichages: 84
  • Draregtestv.zip
    17.6 KB · Affichages: 91
Dernière édition:

drareg78

XLDnaute Junior
Re : Résultat d'un tirage aléatoire avec condition

Encore merci JP14, mais là c'est vraiment trop fort. Merci aussi pour les explications qui accompagnent les macros. Je vais m'atteler mainenant à leur compréhension, ce qui n'est pas encore gagné.

Trop fort
 

drareg78

XLDnaute Junior
Re : Résultat d'un tirage aléatoire avec condition

Bonsoir le forum.

Je fais remonter la discussion pour détail. Dans mon fichier ex j'avais mentioné pour l'exemple une liste limitée à 100 equipes en précisant que la liste pouvait ou devait pouvoir être modifiable. Lorsque je teste un nombre supérieur à 100, ce chiffre apparait deux fois dans le tirage et lorsque le nombre d'équipe et inférieur (Ex 80) le dernier N° (80 en l'occurence) n'apparait pas et est remplacé par 100 bien que l'équipe en regard soit la bonne. La macro peut elle être modifiée pour prendre en compte cette variable??
Merci de votre aide
 

Pièces jointes

  • Draregtestv.zip
    17.6 KB · Affichages: 102
  • Draregtestv.zip
    17.6 KB · Affichages: 79
  • Draregtestv.zip
    17.6 KB · Affichages: 84

drareg78

XLDnaute Junior
Re : Résultat d'un tirage aléatoire avec condition

Bonjour

Ci dessous le code à corriger

Code:
If val1 = 0 Then val1 = nbequ

Jp
Encore merci JP mais là je suis un âne car j'aurai dû trouver tout seul. Il me reste encore une ou deux bricoles à faire sur ce fichier mais avant de revenir éventuellement vers toi, je vais essayer de résoudre la chose moi même.
Encore merci tu as été très sympa de m'aider
Gérard
 

Statistiques des forums

Discussions
312 582
Messages
2 089 951
Membres
104 314
dernier inscrit
Tuubibumi