Sub Meilleure_Attaque_Défense()
Dim Dc As Object, NbEq As Byte
Const AGéné = 1, ADom = 2, AExt = 3, DGéné = 4, DDom = 5, DExt = 6
Set Dc = CreateObject("Scripting.Dictionary")
tb_Eq = [ts_Equipes].Value
If IsEmpty(tb_Eq) Then Exit Sub
If WorksheetFunction.CountA(tb_Eq) = 0 Then Exit Sub
NbEq = UBound(tb_Eq, 1)
ReDim tb_Eq_A_D(1 To NbEq, 1 To 6)
'Initialisation du dictionnaire
For i = 1 To NbEq
Dc(tb_Eq(i, 1)) = i
Next
DernièreJournée = CByte(Right([Titre_Classement].Cells(1, 1).Value, 2))
Nb_Lgn = (NbEq / 2) * DernièreJournée
tb_Résult = [ts_Calendrier].Resize(Nb_Lgn, 4).Offset(0, 2)
For i = 1 To Nb_Lgn
tb_Eq_A_D(Dc(tb_Résult(i, 1)), AGéné) = tb_Eq_A_D(Dc(tb_Résult(i, 1)), AGéné) + tb_Résult(i, 2)
tb_Eq_A_D(Dc(tb_Résult(i, 1)), ADom) = tb_Eq_A_D(Dc(tb_Résult(i, 1)), ADom) + tb_Résult(i, 2)
tb_Eq_A_D(Dc(tb_Résult(i, 1)), DGéné) = tb_Eq_A_D(Dc(tb_Résult(i, 1)), DGéné) + tb_Résult(i, 3)
tb_Eq_A_D(Dc(tb_Résult(i, 1)), DDom) = tb_Eq_A_D(Dc(tb_Résult(i, 1)), DDom) + tb_Résult(i, 3)
tb_Eq_A_D(Dc(tb_Résult(i, 4)), AGéné) = tb_Eq_A_D(Dc(tb_Résult(i, 4)), AGéné) + tb_Résult(i, 3)
tb_Eq_A_D(Dc(tb_Résult(i, 4)), AExt) = tb_Eq_A_D(Dc(tb_Résult(i, 4)), AExt) + tb_Résult(i, 3)
tb_Eq_A_D(Dc(tb_Résult(i, 4)), DGéné) = tb_Eq_A_D(Dc(tb_Résult(i, 4)), DGéné) + tb_Résult(i, 2)
tb_Eq_A_D(Dc(tb_Résult(i, 4)), DExt) = tb_Eq_A_D(Dc(tb_Résult(i, 4)), DExt) + tb_Résult(i, 2)
Next
tbAttaque = [ts_Meilleure_Attaque]
TbDéfense = [ts_Meilleure_Défense]
Select Case sh_Suivi.CBx_Chx_Lieu.Value
Case "En Général"
For Each clef In Dc.keys
Idx = Dc(clef)
tbAttaque(Idx, 1) = "=RANK([@Buts],[Buts])"
tbAttaque(Idx, 2) = clef
tbAttaque(Idx, 3) = tb_Eq_A_D(Idx, AGéné)
TbDéfense(Idx, 1) = "=RANK([@Buts],[Buts],1)"
TbDéfense(Idx, 2) = clef
TbDéfense(Idx, 3) = tb_Eq_A_D(Idx, DGéné)
Next
Case "À Domicile"
For Each clef In Dc.keys
Idx = Dc(clef)
tbAttaque(Idx, 1) = "=RANK([@Buts],[Buts])"
tbAttaque(Idx, 2) = clef
tbAttaque(Idx, 3) = tb_Eq_A_D(Idx, ADom)
TbDéfense(Idx, 1) = "=RANK([@Buts],[Buts],1)"
TbDéfense(Idx, 2) = clef
TbDéfense(Idx, 3) = tb_Eq_A_D(Idx, DDom)
Next
Case "À l'Extérieur"
For Each clef In Dc.keys
Idx = Dc(clef)
tbAttaque(Idx, 1) = "=RANK([@Buts],[Buts])"
tbAttaque(Idx, 2) = clef
tbAttaque(Idx, 3) = tb_Eq_A_D(Idx, AExt)
TbDéfense(Idx, 1) = "=RANK([@Buts],[Buts],1)"
TbDéfense(Idx, 2) = clef
TbDéfense(Idx, 3) = tb_Eq_A_D(Idx, DExt)
Next
Case Else
End Select
With [ts_Meilleure_Attaque]
.ListObject.Resize .ListObject.Range.Resize(NbEq + 1)
.Formula = tbAttaque
.Value = .Value
With .ListObject.Sort
.SortFields.Clear
.SortFields.Add Key:=[ts_Meilleure_Attaque[Rang]], SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
.Header = xlYes
.Apply
End With
End With
With [ts_Meilleure_Défense]
.Formula = TbDéfense
.Value = .Value
With .ListObject.Sort
.SortFields.Clear
.SortFields.Add Key:=[ts_Meilleure_Défense[Rang]], SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
.Header = xlYes
.Apply
End With
End With
End Sub