Bonjour,
Salut à tous !
Une proposition sensiblement différente...
Le fait de devoir cocher (mettre des "X") dans des cellules ne m'a pas paru très ergonomique, j'ai donc d'une part interdit toute saisie manuelle dans le tableau de commande, et d'autre part dévolu le boulot consistant à cocher, puis à opérer le masquage-démasquage des bâtiments, au clic droit.
Ainsi un clic droit dans le tableau de commande provoque le choix d'un bâtiment (ex : clic droit en B4 ou C4, c'est B1, en D7 ou E7, c'est B9, etc.), s'il est coché on décoche (et on rend visible), s'il n'est pas coché on coche (et on masque).
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim Bt%, n%, k%, ln0%, ln1%, m As Boolean
If Not Intersect(Target, Me.Range("B4:G8")) Is Nothing Then
n = Target.Row: k = Target.Column - (Target.Column Mod 2)
Bt = n - 3 + (k / 2 - 1) * 5: k = k + 1
ln0 = Bt * 8 - 3: ln1 = Bt * 8 + 4
Application.EnableEvents = False
If IsEmpty(Me.Cells(n, k)) Then
m = False: Me.Cells(n, k) = "X"
ElseIf Me.Cells(n, k) = "X" Then
m = True: Me.Cells(n, k).ClearContents
End If
Application.EnableEvents = True
Cancel = True
Worksheets("Bâtiments").Rows(ln0 & ":" & ln1).Hidden = m
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Me.Range("B4:G8")) Is Nothing Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End Sub
Cordialement.