Bonjour,
Dans ton classeur, tu rajoutes une feuille et dans un module standard, tu colles le code ci-dessous en adaptant le nom du module de cette nouvelle feuille (dans mon code c'est "Feuil1") :
Sub Limiter()
Dim Fe As Worksheet
For Each Fe In Worksheets
'dans la fenêtre du projet VBA (à gauche) la feuille que tu as rajouté a entre parenthèses le nom de l'onglet et devant le nom de son module
'il faut que tu remplaces "Feuil1" ci-dessous par le nom du module !!!
'la valeur "xlSheetVeryHidden" empêche de voir qu'il y a des feuilles cachées dans le menu "Masquer & Afficher" du bouton "Format"
If Fe.CodeName <> "Feuil1" Then Fe.Visible = xlSheetVeryHidden
Next Fe
With Feuil1
.Range("B2").Value = "Ce classeur est inutilisable en l'état si vous n'autorisez pas l'utilisation des macro."
.Range("B4").Value = "Pour activer les macros, cliquez sur le bouton ""Option d'Excel"", cliquez sur le bouton ""Standard"", cochez la case"
.Range("B5").Value = """Afficher l'onglet Développeur dans le ruban"" ensuite, dans la zone ""Code"" de l'onglet ""Développeur"" "
.Range("B6").Value = "cliquez sur le bouton ""Sécurité des macros"" puis sur le bouton ""Paramètres des macros"" et cochez"
.Range("B7").Value = """Activer toutes les macros (non recommandé ; risque d'exécution de code potentiellement dangeureux"""
.Range("B8").Value = "Fermez le classeur et réouvrez-le pour pouvoir l'utiliser."
'restreint la zone d'affichage de la ligne 1 à 10 et de la colonne A à N
.Range("11:" & Rows.Count).EntireRow.Hidden = True
.Range("O:XFD").EntireColumn.Hidden = True
'protège la feuille en interdisant la sélection de cellule
.Protect "pskyl", True, True, True
.EnableSelection = xlNoSelection
End With
End Sub
une fois exécuté (la feuille est alors paramétrée), tu peux supprimer ce code du classeur si le résultat te convient ou alors apporter les modifs que tu souhaites.
Dans le module du classeur (ThisWorkbook), tu colles le code ci-dessous :
Private Sub Workbook_Open()
Parametrer
End Sub
et dans le module standard, tu colles celui-ci :
Sub Parametrer()
Dim Fe As Worksheet
For Each Fe In Worksheets
Fe.Visible = xlSheetVisible
Next Fe
Feuil1.Visible = xlSheetVeryHidden
End Sub
Si les macros sont activées, la procédure événementielle "Workbook_Open()" va appeler la proc "Parametrer" qui va afficher les feuilles cachées et masquer la feuille d'accueil servant à informer si les macros sont désactivées