1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
Dim bEnCours As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
Dim nbTab As Integer
Dim nbRowDeb As Long
Dim nbRowFin As Long
If bEnCours Then Exit Sub
If Target.Row >= 4 And Target.Row <= 9 And Target.Column >= 3 And Target.Column <= 6 Then
nbTab = 1
nbRowDeb = 4
nbRowFin = 9
ElseIf Target.Row >= 13 And Target.Row <= 18 And Target.Column >= 3 And Target.Column <= 6 Then
nbTab = 1
nbRowDeb = 13
nbRowFin = 18
ElseIf Target.Row >= 22 And Target.Row <= 30 And Target.Column >= 3 And Target.Column <= 6 Then
nbTab = 1
nbRowDeb = 22
nbRowFin = 30
Else
Exit Sub
End If
bEnCours = True
If Cells(31, Target.Column).Value = Cells(2, Target.Column).Value Then
Call CompleteLigne(0, 4, 9, Target.Row, Target.Column)
Call CompleteColonne(0, 4, 9, Target.Row, Target.Column)
Call CompleteColonne(0, 13, 18, Target.Row, Target.Column)
Call CompleteColonne(0, 22, 30, Target.Row, Target.Column)
ElseIf Cells(Target.Row, Target.Column).Value = "X" Then
Call CompleteLigne(nbTab, nbRowDeb, nbRowFin, Target.Row, Target.Column)
End If
bEnCours = False
End Sub
Sub CompleteLigne(iTab As Integer, iDeb As Long, iFin As Long, iRow As Long, iColumn As Long)
Dim i As Long
' Complète la ligne
For i = 3 To 6
If Cells(iRow, i).Value = "" Then
Cells(iRow, i).Value = "O"
End If
Next i
End Sub
Sub CompleteColonne(iTab As Integer, iDeb As Long, iFin As Long, iRow As Long, iColumn As Long)
Dim i As Long
' Complète la colonne
For i = iDeb To iFin
If Cells(i, iColumn).Value = "" Then
Cells(i, iColumn).Value = "O"
End If
Next i
End Sub |
Partager