Private Sub Worksheet_Change(ByVal Target As Range) 'au changement dans l'onglet
Dim nj As Byte 'déclare la variable nj (Nombre de Joueurs)
Dim li As Range 'déclare la variable li (LIgne)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim col1 As Byte 'déclare la variable col1 (COLonne 1)
Dim col2 As Byte 'déclare la variable col2 (COLonne 2)
Dim max1 As Integer 'déclare la variable max1 (maximum 1)
Dim max2 As Integer 'déclare la variable max2 (maximum 2)
'si le changement a lieu ailleurs que dans la plage B4:K45, sort de la procédure
If Application.Intersect(Target, Range("B4:K45")) Is Nothing Then Exit Sub
'si le nombre de cellule sélectionnées est supérieur à 1, sort de la procédure
If Selection.Cells.Count > 1 Then Exit Sub
nj = Application.WorksheetFunction.CountA(Range("B1:K1")) 'définit le nombre de joueurs
Set li = Range(Cells(Target.Row, 2), Cells(Target.Row, 11)) 'définit la ligne li (ligne de la première cellule éditée)
If Application.WorksheetFunction.CountA(li) = nj Then 'condition 1 : si le nombre de valeurs dans la ligne est égal au nombre de joueurs
For Each cel In li 'boucle 1 : sur toutes les cellules de la ligne li
If Abs(cel.Value) > max Then 'condition 2 : si la valeur absolue de la cellule cel est supérieure à la variable max
max = Abs(cel.Value) 'définit le maximum max
col1 = cel.Column 'recupère la colonne col1 de cette valeur max
If col1 Mod 2 <> 0 Then col1 = col1 - 1 'si col1 est impaire alors col1 = col1 - 1 (Preneur)
End If 'fin de la condition 2
Next cel 'prochaine cellule cel de la boucle 1
If nj > 4 Then 'condition 3 : si il y a 5 joueurs
For Each cel In li 'boucle 2 : sur toutes les cellules de la plage li
If cel.Value = Cells(cel.Row, col1) / 2 Then 'condition 4 : si la valeur de la cellule est la moitié de la valeur max
col2 = cel.Column 'récupère la colonne col2 de cette valeur
If col2 Mod 2 = 0 Then col2 = col2 + 1 'si col2 est paire alors col2 = col2 + 1 (Appelé)
Exit For 'sort de la boucle 2
End If 'fin de la condition 4
Next cel 'prochaine cellule cel de la boucle 2
If col2 > 0 Then Cells(3, col2).Value = Cells(3, col2).Value + 1 'incrément le joueur appelé
End If 'fin de la condition 3
Cells(3, col1).Value = Cells(3, col1).Value + 1 'incrémente le joueur preneur
End If 'fin de la condition 1
End Sub