Public Sub RESULT1_F(ByRef ws As Worksheet, ByVal num As Byte)
'déclare la variable sht comme Onglet, la variable shtf comme Onglet
Dim sht As Worksheet, shtf As Worksheet
'déclare la varialbe LL comme Entier, la variable i comme Entier, la variable FinPrem comme Entier
Dim LL As Integer, i As Integer, FinPrem As Integer
'décalre la variable ligF comme Byte, la variable ColF comme Byte
Dim LigF As Byte, ColF As Byte
'décalre la variable tour comme booléenne (vrai ou faux)
Dim tour As Boolean
Application.ScreenUpdating = False 'masque les changements à l'ecran
NbPoules = num 'définit la variable NbPoules (variable non déclarée étrangement) par rapport au second argument de la fonction num
On Error Resume Next 'gestion ds erreurs ( en cas de bug passe à la ligne suivante)
Application.DisplayAlerts = False 'masque les messages d'excel
Sheets("Temp").Delete 'supprime l'onglet "temp" (si cet onglet n'existe pas cela génère un bug... d'où le "On Error Resume Next")
Application.DisplayAlerts = False 'répétition inutile de la ligne au dessus (à mon avis l'auteur voulait dire "= true")
Set sht = Worksheets.Add 'définit la variable sht (nouvel onglet)
sht.Name = "Temp" 'nomme le nouvel onglet "Temp"
UsfDF2.Show 'ouvre l'UserForm "UsfDF2" (certainement des données à renseigner)
With ws 'prend en compte l'onglet ws (premier argument de la fonction)
For i = 1 To num 'boucle de 1 à num
'copie une plage déterminée par les variables i et Opt (non déclarée ni définit ici) et la colle dans l'onglet "Temp"
.Range(.Cells(6, 5 * i - 4), .Cells(5 + Opt, 5 * i - 1)).Copy sht.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Next i 'prochain élément de la boucle
For i = 1 To num 'répétition de la même boucle (les deux lignes en dessous aurait pu être écrite dans la boucle au dessus...)
LL = .Cells(5, 5 * i - 4).End(xlDown).Row 'définit la variable LL
'copie une plage déterminée par les variables i et Opt (non déclarée ni définit ici) et la colle dans l'onglet "Temp"
.Range(.Cells(6 + Opt, 5 * i - 4), .Cells(LL, 5 * i - 1)).Copy sht.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
Next i 'prochain élément de la boucle
End With 'fin de la prise en compte l'onglet ws
With sht 'prend en compte l'onglet "Temp"
FinPrem = .Cells(Rows.Count, 1).End(xlUp).Row 'définit la variable FimPrem
'tri ascendant des colonne À à D par rapport à la colonne D
.Range("A" & Opt * num + 2 & ":D" & FinPrem).Sort Key1:=.Range("D" & Opt * num + 2), Order1:=xlAscending, Header:=xlNo
End With 'fin de la prese en compte de l'onglet "Temp"
LigF = 6: ColF = 1 'définit la variable LigF et la variable ColF (Ligne 6 et colonne A)
tour = True 'définit la variable tour (vrai)
Set shtf = Sheets("Finales") 'définit l'onglet shtf
With shtf 'prend en compte l'onglet "Finales"
.Range("A6:D12").Clear 'Contents 'Efface "tout" de la plage A6:D12
For i = 2 To NbF + 1 'boucle de 2 à NbF (variable ni décalrée ni définit ici ???)
'copie de l'onglet "Temp" une plage des colonnes A à D et la colle dans A6 de l'onglet "Finales"
sht.Range("A" & i & ":D" & i).Copy .Cells(LigF, ColF)
'***************************************************
'à mon avis ton problème se trouve dans cette partie
tour = Not tour 'redéfinit la variable tour (faux)
If tour Then 'condition : si tour est vrai (je vois mal comment vu la ligne au dessus ???)
LigF = LigF + 1 'redéfinit la ligne en l'incrémentant de 1
Else 'sinon
ColF = IIf(ColF = 6, 1, 6) 'redéfinit la variable ColF (si la collone ColF était 1 elle devient 6, si elle était 6 elle devient1)
End If 'fin de la condition
'***************************************************
Next i 'prochaine ligne i de la boucle
End With 'fin de la prise en compte de l'onglet "Finales"
Application.DisplayAlerts = False 'masque les messages d'excel
sht.Delete 'supprime l'onglet "Temp"
Application.DisplayAlerts = False 'répétition inutile de la ligne au dessus (à mon avis l'auteur voulait dire "= true")
shtf.Activate 'active l'onglet "Finales"
Set sht = Nothing 'vide la variable sht
Set shtf = Nothing 'vide la variable shtf
End Sub