Tirage au sort aléatoire pour la pétanque

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 !
 

Fichiers joints

Dranreb

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.
 

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 !
 

Fichiers joints

Dranreb

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

J'avais MMax = IIf(JMax <= 8, 3, 4), que faut-il d'autre pour lui ?
 

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 !
 

JOAN66

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

Bonjour JBarbe, le fichier est dans le lien "document joint" car il est trop lourd .
Je vais essayer de suivre la procédure .
cordialement
 

JOAN66

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

Hélas rien ne fonctionne ce matin
Je vais suivre la procédure
a bientôt Joan
 

JBARBE

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

J'ai supprimer des colonnes inutiles dans l'onglet " Tableau Tournante "

D'autre part dans l'onglet "Impression" pour ne plus avoir #N/A voir cellule C17 la modification à prendre en compte pour toutes ces cellules :

=SI(ESTNA(RECHERCHEV(C16;'Tableau Tournante'!$A$6:$B$168;2));"")

PS : le fichier n'est pas trop gros pour le mettre sur ce forum !!!!!!

bonne journée !
 

Fichiers joints

JOAN66

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

Merci pour la réponse . si je prends la cellule "C17" avec la poignet a "D17" " Faux" est dans la cellule à la place du nom ?.
Pour le fichier désolé il na pas voulu le prendre en pièce jointe .
Cordialement
 

JBARBE

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

Merci pour la réponse . si je prends la cellule "C17" avec la poignet a "D17" " Faux" est dans la cellule à la place du nom ?.
Pour le fichier désolé il na pas voulu le prendre en pièce jointe .
Cordialement
Toutes les cellules qui comporte RECHERCHEV !!!!!!!!!!!!! Évidemment !
 

Dranreb

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

Bonjour.
Pour sortir la feuille Impression en même temps, ajouter ce paquet à la fin de la procédure Tirage22
VB:
Rem. ——— Mise en forme et affichage pour l'impression
Dim Noms(): Noms = Feuil1.[B6].Resize(JMax).Value
Set PlgRés = Feuil2.[C8].Resize(320, 23)
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 * 2 - 1, 6 * (M - 1) + (C * 3 - 1) \ 2) = Tirage(M, L, C)
      TAff(L * 2, 6 * (M - 1) + (C * 3 - 1) \ 2) = Noms(Tirage(M, L, C), 1)
      End If
   Next C, M, L
PlgRés.Value = TAff
PlgRés.Rows.AutoFit ' éventuellement
Feuil2.PageSetup.PrintArea = Feuil2.[C1].Resize(4 + LMax * 2, MMax * 6 - 1).Address
End Sub
Je supprimerais les bordures supérieures des lignes de noms pour qu'il n'y ait aucune confusion quant à ce qu'il concerne ne numéro au dessus ou en dessous.

Tiens, je viens de découvrir qu'il y a un UserForm de présentation, apparemment, avec une photo et un texte. EXcelDownloads n'y est pas mentionné !?
 
Dernière édition:

JOAN66

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

oui ! tu a raison, c'est un essai a l'ouverture du Tableau pour remercier les pro d'Excel-Donwload pour leur aimable gentillesse a la participation de la création des macros, mais il y a eu une erreur , milles excuses.
Sur la photos il y a les joueurs donc celui qui vous a donné du travail (le 3eme de gauche).
Je colle tout de suite le Paquet afin de tester la macro
pour supprimer les " ERREUR - #N/A "
=SI(C16=0;"";RECHERCHEV(C16;'Tableau Tournante'!$A$6:$B$168;2))
et la recherche cellules vides peut se réaliser.
Cordialement Joan
 

Discussions similaires


Haut Bas