XL 2016 Verrouiller les formules de plusieurs feuilles excel sans verrouiller les macros et les boutons

kamal.elkakiri

XLDnaute Nouveau
Bonjour à tous,
Je souhaiterais verrouiller les formules de plusieurs feuilles de mon classeur mais en gardant les boutons actifs ainsi que toutes les macros
J'ai trouvé plusieurs exemples sur le net mais à chaque fois soit:
- Les formules sans verrouillées mais les boutons aussi
- Les formules sont verrouillées les boutons/macros sont débloquées mais que sur la première feuille par contre elles sont bloquées sur la deuxième feuille
...etc

Auriez vous une solution svp?
Merci
 
Solution
Comme dit précédemment ce n'est pas que Checkbox1 soit verrouillé mais que vous essayez de toucher à la page qui , elle, est verrouillée.
Si vous ne faites rien d'autre que de masquer des colonnes alors lors de la protection, acceptez qu'on puisse toucher aux colonnes :
1.jpg

Lors de la protection, il y a plein de paramètres possibles. Dans votre cas cocher Format de ligne et de Colonne.
dans ce cas, la macro peut rester dans l'état.
Ce qui vous fait deux solutions pour résoudre votre problème. ;)

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour kamal.elkakiri,
Une petite macro :
VB:
Sub VerrouilleToutesFeuilles()
Dim Sh As Worksheet
For Each Sh In ActiveWorkbook.Sheets
    Sheets(Sh.Name).Protect DrawingObjects:=False, Contents:=True, Scenarios:=True
Next Sh
End Sub
Elle protège les feuilles sans les boutons.
On peut ensuite l'enrichir pour faire exactement ce qu'on désire.
 

kamal.elkakiri

XLDnaute Nouveau
Bonjour Sylvanu
ce code marche bien pour deux feuilles mais pour un troisième avec le même type de checkbox que j’utilise pour masquer ou démasquer des colonnes, j'ai ue erreur 1004 : impossible de définir la propriété Hidden de la classe Range et le code s’arrête à la ligne : Columns.Hidden = False
Vois tu une chose qui pourrait poser problème car je n'arrive pas à détecter ou est l'erreur état donné que ce même code fonctionne très bien pour toutes mes feuilles.
Private Sub CheckBox1_Click()
Application.ScreenUpdating = False
Columns.Hidden = False
Range("J:R").EntireColumn.Hidden = CheckBox1
Application.ScreenUpdating = True
End Sub

Merci
 

kamal.elkakiri

XLDnaute Nouveau
Bonjour Sylvanu
le code ci dessous me permet de masquer et démasquer les colonnes de J à R via une checkbox1.
J'ai trois feuilles excel dans lesquelles je donne la possibilité de cacher certaines colonne (en fonction des pages).
Mon souci c'est qu'avec le code que vous m'avez donné, j'arrive très bien à protéger les formules et les macros (dont celle pour masquer et démasquer les colonnes) fonctionnent bien sauf pour une feuille ou l'erreur se produit sur la 3e ligne ( Columns.Hidden = False)


Private Sub CheckBox1_Click()
Application.ScreenUpdating = False
Columns.Hidden = False
Range("J:R").EntireColumn.Hidden = CheckBox1
Application.ScreenUpdating = True
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Si vos feuilles sont protégées en amont, il faut les déverrouillées avant de travailler dessus, et penser à les reverrouiller après.
J'ai fait cet essai qui semble donner satisfaction.
VB:
Private Sub CheckBox1_Click()
    ActiveSheet.Unprotect
    Application.ScreenUpdating = False
    Columns.Hidden = False
    Range("M:U").EntireColumn.Hidden = CheckBox1
    Application.ScreenUpdating = True
    ActiveSheet.Protect
End Sub
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Comme dit précédemment ce n'est pas que Checkbox1 soit verrouillé mais que vous essayez de toucher à la page qui , elle, est verrouillée.
Si vous ne faites rien d'autre que de masquer des colonnes alors lors de la protection, acceptez qu'on puisse toucher aux colonnes :
1.jpg

Lors de la protection, il y a plein de paramètres possibles. Dans votre cas cocher Format de ligne et de Colonne.
dans ce cas, la macro peut rester dans l'état.
Ce qui vous fait deux solutions pour résoudre votre problème. ;)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Ce n'est pas obligatoirement la bonne solution dans votre cas.
Car pour revenir au post #1 vous allez rendre les colonnes et lignes modifiables sur toutes les pages si vous utilisez une macro globale. Ce n'est peut être pas ce que vous voulez.
L’avantage de la macro du post #10 c'est que vous décidez sur quel page et à quel moment vous déverrouillez une page.
Tout dépend de votre application.
 
Haut Bas