Bonjour à tous,
Je sollicite votre concours pour fixer mon problème.
En fait, je veux créer une macro pour établir un calendrier de rencontre.
Cette macro a pour objectif de créer un calendrier de rencontre où une équipe doit rencontrer toutes les autres sauf elle-même.
Cela veut dire que tous les matchs pouvant être effectués en même temps seront regroupés.
Exemple : Pour 4 équipes Equipe1,Equipe2,Equipe3,Equipe4, un tirage possible est :
Rencontres 1 : Equipe1 vs Equipe2 et Equipe3 vs Equipe4
Rencontres 2 : Equipe1 vs Equipe4 et Equipe2 vs Equipe3
Rencontres 3 : Equipe1 vs Equipe3 et Equipe4 vs Equipe2...
j'aai uncode erreur d'exécution "9".
merci d'avance pour lasolution.
Je sollicite votre concours pour fixer mon problème.
En fait, je veux créer une macro pour établir un calendrier de rencontre.
Cette macro a pour objectif de créer un calendrier de rencontre où une équipe doit rencontrer toutes les autres sauf elle-même.
Cela veut dire que tous les matchs pouvant être effectués en même temps seront regroupés.
Exemple : Pour 4 équipes Equipe1,Equipe2,Equipe3,Equipe4, un tirage possible est :
Rencontres 1 : Equipe1 vs Equipe2 et Equipe3 vs Equipe4
Rencontres 2 : Equipe1 vs Equipe4 et Equipe2 vs Equipe3
Rencontres 3 : Equipe1 vs Equipe3 et Equipe4 vs Equipe2...
j'aai uncode erreur d'exécution "9".
merci d'avance pour lasolution.
VB:
Sub GenererCalendrier()
' Déclaration des variables
Dim Equipes As Variant
Dim nbEquipes As Integer
Dim nbRencontres As Integer
Dim Resultats() As String
Dim i As Integer, j As Integer, k As Integer
Dim temp As Variant
' Déclaration des constantes
Const EQUIPES_RANGE As String = "A1:A6"
Const CALENDRIER_COL_DEBUT As Integer = 2
Const CALENDRIER_COL_FIN As Integer = 4
' Récupération des équipes dans la plage A1:A8
Equipes = Range(EQUIPES_RANGE).Value
' Validation du nombre d'équipes
If UBound(Equipes, 1) Mod 2 <> 0 Then
MsgBox "Le nombre d'équipes doit être pair."
Exit Sub
End If
' Détermination du nombre d'équipes et de rencontres
nbEquipes = UBound(Equipes, 1)
nbRencontres = nbEquipes - 1
' Mélange des équipes
For i = 1 To nbEquipes
j = Int(Rnd() * nbEquipes) + 1
temp = Equipes(i, 1)
Equipes(i, 1) = Equipes(j, 1)
Equipes(j, 1) = temp
Next i
' Dimensionnement du tableau de résultats
ReDim Resultats(1 To nbRencontres, 1 To nbEquipes)
' Génération du calendrier
k = 1 ' Numéro de la rencontre
For i = 1 To nbEquipes - 1
For j = i + 1 To nbEquipes
Resultats(k, 1) = "Rencontre " & k
Resultats(k, i + 1) = Equipes(i, 1) & " vs. " & Equipes(j, 1)
Resultats(k, j + 1) = Equipes(j, 1) & " vs. " & Equipes(i, 1)
k = k + 1
Next j
Next i
' Affichage du calendrier dans les colonnes B à D
Range(Cells(1, CALENDRIER_COL_DEBUT), Cells(nbRencontres, CALENDRIER_COL_FIN)).Value = Resultats
End Sub