Résolu 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
 
Ce fil a été résolu! Aller à la solution…

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
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Re Bonjour,
Quel rapport entre protéger de multiples feuilles et avoir l'erreur que vous décrivez ?
Que peux bien vouloir dire : Range("J:R").EntireColumn.Hidden = CheckBox1 ?
Pouvez vous m'éclairer ?
 

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
J'ai testé ça :
VB:
Sub essai()
    Columns.Hidden = False
End Sub
Il y a erreur 1004 ... si la feuille est protégée.
 

kamal.elkakiri

XLDnaute Nouveau
Sur ce code je ne peux pas définir les colonnes à masquer.
Ce qui est bizarre c'est que le code tu vous m'avez donné fonctionne sans problème sur deux feuilles du même classeur et pas sur la troisième
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
... pouvez vous transmettre un petit fichier.
Ma macro marche sur toutes les feuilles. Donc si ça coince sur l'une d'elles c'est qu'in y a un autre souci spécifique à cette feuille.
 

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. ;)
 
Ce message a été identifié comme étant une solution!

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.
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Si le post #10 protège les formules mais elles apparaissent toujours dans la barre de formules.
Pour ne plus les voir il faut décocher Sélectionner les cellules verrouillées.
 

kamal.elkakiri

XLDnaute Nouveau
Merci Sylvanu,
Une dernière question, savez vous pourquoi à chaque fois que j'active cette protection avec le code que vous m'avez donné, un message me demande de ÔTER LA PROTECTION!
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Vous parlez du code du post #2 ?
Avez vous modifié la configuration de la protection ? Comme celui du post #11.
car si c'est le cas c'est normal, la déprotection doit déprotéger avec la même config que la protection.
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas