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

XL 2021 Création de poule pour un tournois

LeLigérien

XLDnaute Nouveau
Bonjour tous le monde,
Je refais une demande car la première fois ma demande n'était pas très clair.
Je précise que je suis novice en VBA.
Dans le fichier joint, j'ai une liste de joueur dans la colonne D de la feuille "inscrits" que je me sert pour créer des poules pour un tournois.
Dans la feuille "Déroulement Tournois" je définie en E1 le nb de joueurs/poule et E2 le Nb de joueurs/poule minimum.
Et mes poules sont créées dans la feuille "Données"

Par exemple j'ai 13 joueurs et je veux 4 joueurs et 3 mini par poule ça me donnera 1 poule de 4 et 3 de 3 joueurs.

Si vous avez une idée de comment faire ...
Merci par avance
 

Pièces jointes

  • essai.xlsm
    34.5 KB · Affichages: 11

Dranreb

XLDnaute Barbatruc
Bonjour.
VB:
Option Explicit
Function Groupes43(ByVal Total As Integer) As Byte()
   CalcGroup43 Groupes43, Total
   End Function
Sub CalcGroup43(T() As Byte, ByVal Total As Integer)
   Dim Nb3 As Byte, N As Integer
   ReDim T(1 To (Total + 3) \ 4)
   Nb3 = UBound(T) * 4 - Total
   For N = UBound(T) To 1 Step -1
      If Nb3 > 0 Then
         T(N) = 3: Nb3 = Nb3 - 1
      Else
         T(N) = 4
         End If
      Next N
   End Sub
Remarque: ne donne un résultat exploitable que pour Total >= 6
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Exemple d'utilisation :
VB:
Option Explicit
Sub CreerGroupes()
   Dim RngInsc As Range, TInsc(), T43() As Byte, TRésu(), LInsc As Integer, L As Integer, C As Integer
   Set RngInsc = [T_Inscrits[NOM P.]]
   With RngInsc(RngInsc.Rows.Count, 1)
      If IsEmpty(.Value) Then Set RngInsc = RngInsc.Resize(.End(xlUp).Row - RngInsc.Row + 1)
      End With
   TInsc = RngInsc.Value
   CalcGroup43 T43, UBound(TInsc, 1)
   ReDim TRésu(1 To 4, 1 To 10)
   LInsc = 0
   For C = 1 To UBound(T43)
      For L = 1 To T43(C)
         LInsc = LInsc + 1
         TRésu(L, C) = TInsc(LInsc, 1)
         Next L, C
   WshDonnées.[E2:N5].Value = TRésu
   WshDonnées.Activate
   End Sub
 

LeLigérien

XLDnaute Nouveau
Merci pour ta réponse Dranred.
Tous d'abord tu remarqueras que j'essaie de mettre en application tes remarques ou explications que tu me donnes.
Mais là, tu es dur avec moi ,tu met la barre un peu plus haut.
j'ai essayé de l'appliquer dans mon cas mais je n'y arrive pas.
Je sais que je te le demande à chaque fois mais tu pourrais l'intégrer a mon fichier?
en te remerciant.
 

micheldu52

XLDnaute Occasionnel
bojour,
regarde "tableau de poules" sur lequel j'aide, ca devrait te donner des pistes.
Bien à toi,
Michel
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…