Re,
Pour les cases à cocher, je n'avais pas vu ce détail.
Malheureusement, vous avez utilisé des cases à cocher de formulaire et non ActiveX (ou là, l'option est disponible). Du coup, pour le masquer, il faut mettre un code vba pour chaque case (or il y en a beaucoup visiblement ).
Alors soit vous avez le temps et vous pouvez utiliser un code du type (a mettre dans le code de la feuille et non dans un module) :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Colums("G:K").Hidden = True Then
ActiveSheet.Shapes("Case à cocher 4").Visible = False
ActiveSheet.Shapes("Case à cocher 35").Visible = False
'etc...
Else
ActiveSheet.Shapes("Case à cocher 4").Visible = True
ActiveSheet.Shapes("Case à cocher 35").Visible = True
'etc...
End If
End Sub
Une autre solution serait de mettre dans l'ordre les case (par numéro) afin de faire une boucle sur les noms (pour éviter d'avoir un code interminable et d'épeler toutes les possibilités).
Mais comme vous pouvez le constater, rien de simple et de rapide (du moins pas pour moi).
Je vous met un lien vers un sujet similaire ou une solution a été apportée. Peut-être que ça vous inspirera. Par contre, il n'y avait que 2 cases à cocher concernées.
https://forum.excel-pratique.com/viewtopic.php?t=93904
Cordialement