Tirage au sort aléatoire pour la pétanque

natorp

XLDnaute Accro
bonsoir à tous et toutes,

J'ai regardé plusieurs fils, mais je n'ai pas trouvé ce que je cherche
A partir d'une liste (colonne A) créer de façon aléatoire les doublettes d'un tournoi de pétanque en évitant les doublons et d'associer 2 femmes ensemble (critères en colonne B)

j'ai joins un fichier pour travailler, j'ai bien vu qu'il existe une fonction ALEA mais je ne sais pas comment m'en servir... et si cela est la bonne piste...

merci de votre aide et attention, cordialement, Gérard
 

Pièces jointes

  • Classeur1.xls
    16.5 KB · Affichages: 1 486
  • Classeur1.xls
    16.5 KB · Affichages: 1 483
  • Classeur1.xls
    16.5 KB · Affichages: 1 472

Dranreb

XLDnaute Barbatruc
Re : Tirage au sort aléatoire pour la pétanque

Joignez votre essai. Comme ça je ne peux pas voir ce qui cloche. Si le message est "Variable non définie" c'est que des changements importants dans le classeur ont fait que Feuil1 n'est plus, dans la rubrique "Microsoft Excel Objets" du projet VBA, le nom de l'objet Workheet qui assume la représentation de l'entité feuille Excel de l'application hôte nommée "Tableau Tournante".
 

JBARBE

XLDnaute Barbatruc
Re : Tirage au sort aléatoire pour la pétanque

Bonjour à tous, bonjour JOAN66, bonjour Dranreb,

Excusez-moi de m'introduire dans ce post, mais je comprends les difficultés de JOAN66 avec les macros !

J'ai donc apporté les modifications demandées par Dranreb et avec 154 joueurs !

Sub Tirage22()
Dim JMax&, M As Long, L As Long, TAff(), C&

Rem. ——— Initialisations
JMax = Feuil1.[B170].End(xlUp).Row - 5
If JMax Mod 2 = 1 Then
MsgBox "Tirage non applicable pour un nombre impair de participants.", _
vbCritical, "Tirage22": Exit Sub: End If
MMax = IIf(JMax <= 8, 3, 4)


Rem. ——— Initialisations
'JMax = FT22.[JMax].Value
'MMax = FT22.[MMax].Value
LMax = (JMax + 2) \ 4
ReDim DéjàRenc(0 To XTria(JMax, JMax - 1)), _
DéjàPart(0 To XTria(JMax, JMax - 1)), _
DéjàTêtÀTête(1 To JMax)

ReDim JoueursManche(1 To MMax)
Randomize
For M = 1 To MMax: Set JoueursManche(M) = New ListeAléat
JoueursManche(M).Init JMax: Next M
ReDim Tirage(1 To MMax, 1 To LMax, 1 To 4)

Rem. ——— Tirage
If Not RencTrouvée(1, 1) Then MsgBox "Pas de solution trouvée.": Exit Sub

Rem. ——— Mise en forme et affichage du résultat
Dim PlgRés As Range: Set PlgRés = Feuil1.[N6:AC159]
ReDim TAff(1 To PlgRés.Rows.Count, 1 To PlgRés.Columns.Count)
For L = 1 To LMax: For M = 1 To MMax: For C = 1 To 4
If Tirage(M, L, C) <> 0 Then TAff(L, 4 * (M - 1) + C) = Tirage(M, L, C)
Next C, M, L
PlgRés.Value = TAff
End Sub


Bonne journée !
 

Pièces jointes

  • Tableau Liste Aleatoire-2.xlsm
    132 KB · Affichages: 142

JBARBE

XLDnaute Barbatruc
Re : Tirage au sort aléatoire pour la pétanque

En reprenant les tableaux de Dranreb pour un tête à tête ou une doublette et en pouvant modifier le nombre de manches !

Nota : le nombre de manches doit être impérativement saisie !

bonne journée !
 

Pièces jointes

  • Liste_Aléatoire_Petanque1.xlsm
    60.3 KB · Affichages: 120
  • Liste_Aléatoire_Petanque1.xlsm
    60.3 KB · Affichages: 114

JBARBE

XLDnaute Barbatruc
Re : Tirage au sort aléatoire pour la pétanque

Bonjour.

Apparemment pour son cas c'est toujours 4 manches sauf dans le cas où ce n'est pas possible, pour 8 joueurs.

Bonjour Dranreb,

C'est pourquoi et avec votre permission, j'ai repris les anciennes macros et ajouté cette ligne pour les doublettes et remédié ainsi au problème :

If Range("JMax") < 10 And Range("MMax") = 4 Then MsgBox "Nombre de joueurs inférieur à 10 pour 4 manches.": Exit Sub

Bonne journée !
 

Pièces jointes

  • Liste_Aléatoire_Petanque1.xlsm
    59.5 KB · Affichages: 131
  • Liste_Aléatoire_Petanque1.xlsm
    59.5 KB · Affichages: 110

JBARBE

XLDnaute Barbatruc
Re : Tirage au sort aléatoire pour la pétanque

Bravo quand même pour ces algorithmes très complexes et dont je ne peux déchiffrer leurs subtilitées !

Cela montre que j'ai encore beaucoup à apprendre en VBA ( je suis novice) !

Encore une fois merci pour cette démonstration et bonne journée !
 

Dranreb

XLDnaute Barbatruc
Re : Tirage au sort aléatoire pour la pétanque

… dont je ne peux déchiffrer leurs subtilitées !
Il y a juste la fonction XTria qui est un peu 'subtile'. Elle sert à consulter un tableau à une dimension basé 0, dépendant de deux indices obligatoirement différents, spécifiés dans un ordre quelconque.
Pour ce qui est du principe général, comme expliqué au #112, la solution met en œuvre une procédure récursive à laquelle on demande si une rencontre est possible pour la 1ère ligne de la 1ère manche. Elle est récursive du fait qu'elle demande par une nouvelle exécution de ses propres instructions s'il existe une solution pour la 2ième ligne de la 1ère manche, laquelle demandera à son tour … et ainsi de suite.
Et ça fait peur ce genre d'algorithmes qui auraient besoin d'un temps considérable, complètement prohibitif pratiquement, pour s'exécuter, mais seulement dans des cas d'une probabilité infime, négligeable, vraiment malchanceux.
 

JOAN66

XLDnaute Junior
Re : Tirage au sort aléatoire pour la pétanque

Bonsoir a tous , c'est vrai je ne comprends pas vos macros ni le début ni la fin, mais l’essentiel est que ça fonctionne .
Il me reste a faire une impression du tableau des chiffres aléatoires sans les lignes vides pour l'affichage avec un petit bouton et les tournois de pétanque pourrons commencer . Fini les tirages des participants à la main, un petit clic et que la fête commence .
Un grand merci a vous, Dranreb , Jbarbe, pour votre aide et le temps passé a mon tableau car sans vos compétences et votre gentillesses jamais je n’aurai pu arriver au bout de mon projet.
très cordialement Joan
 

JOAN66

XLDnaute Junior
Re : Tirage au sort aléatoire pour la pétanque

Bonsoir Messieurs les magiciens d'Excel , désolé de vous embêtez avec mon problème non pas avec le tirage au sort aléatoire qui lui fonctionne très bien, mais avec le tableau "Impression" . Je souhaiterais faire une impression de la Cellule " C1" à "Y89" sans les cellules vides afin d'imprimer le nombre de lignes avec les valeurs uniquement pour ne pas imprimer toutes les pages. Lorsque je fais une recherche de la dernière cellule vide en "D;D " le curseur se positionne à la ligne "D90" à cause des erreurs #N/A. J'ai regardé dans le forum et sur le net mais hélas je n'ai rien trouvé, d’où mon appel sur le forum .
Cordialement Joan


Document Cjoint
 

JBARBE

XLDnaute Barbatruc
Re : Tirage au sort aléatoire pour la pétanque

Bonsoir Messieurs les magiciens d'Excel , désolé de vous embêtez avec mon problème non pas avec le tirage au sort aléatoire qui lui fonctionne très bien, mais avec le tableau "Impression" . Je souhaiterais faire une impression de la Cellule " C1" à "Y89" sans les cellules vides afin d'imprimer le nombre de lignes avec les valeurs uniquement pour ne pas imprimer toutes les pages. Lorsque je fais une recherche de la dernière cellule vide en "D;D " le curseur se positionne à la ligne "D90" à cause des erreurs #N/A. J'ai regardé dans le forum et sur le net mais hélas je n'ai rien trouvé, d’où mon appel sur le forum .
Cordialement Joan

Bonjour à tous,

JOAN66 ton fichier est illisible !!!

Prière de procéder ainsi sur le forum :

- Clic sur "Aller en mode avancé "
- Clic sur le bouton ( en forme de trombone) Pièces jointes
- Clic sur "Parcourir"
- Choisir le fichier à envoyer
- Clic sur "envoyer"
-Clic sur "fermer cette fenêtre

Nota : Je pense que 89 lignes nécessitera plus d'une feuille d'impression !

Bonne journée !
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 885
Membres
101 830
dernier inscrit
sonia poulaert