XL 2016 Protection d'une feuille avec utilisation de Contrôle de formulaire activeX

Linda42

XLDnaute Occasionnel
Bonjour,

J'ai besoin de votre aide. J'ai créée une sorte de formulaire sur excel.
Je pose un certain nombre de question avec une possibilité de choix de cases à cocher (parfois Contôle de formulaire et d'autre fois Contrôle activeX)
Les contrôle avctive X sont la plus part du temps associé à un code VBA qui masque ou déplie les lignes si le contrôle est sélectionné ou non.
Exemple de Code vba
Private Sub CheckBox2_Click()
[5:12].EntireRow.Hidden = Not CheckBox2
End Sub

Le hic c'est que lorsque je souhaite protéger la feuille, en dévérouillant les cellules et les objets de ma feuille pour que les utilisateurs puissent saisir leur réponse, j'ai le message suivant :
1666013258844.png


Merci pour votre aide
Linda
 

Pièces jointes

  • Protection feuille.xlsm
    21.6 KB · Affichages: 3
Solution
Bonjour,

Une feuille protégée est, par définition, non modifiable. Y compris pour afficher ou masquer des lignes.
Il faut donc déprotéger, puis reprotéger juste après avoir effectué l'action souhaitée :
VB:
Private Sub CheckBox2_Click()
Worksheets("Feuil1").Unprotect
[5:12].EntireRow.Hidden = Not CheckBox2
Worksheets("Feuil1").Protect
End Sub

Attention qu'il faut rajouter le mdp si tu veux protéger avec mdp.

Bonne soirée,

xUpsilon

XLDnaute Accro
Bonjour,

Une feuille protégée est, par définition, non modifiable. Y compris pour afficher ou masquer des lignes.
Il faut donc déprotéger, puis reprotéger juste après avoir effectué l'action souhaitée :
VB:
Private Sub CheckBox2_Click()
Worksheets("Feuil1").Unprotect
[5:12].EntireRow.Hidden = Not CheckBox2
Worksheets("Feuil1").Protect
End Sub

Attention qu'il faut rajouter le mdp si tu veux protéger avec mdp.

Bonne soirée,
 

Linda42

XLDnaute Occasionnel
Bonjour,

Une feuille protégée est, par définition, non modifiable. Y compris pour afficher ou masquer des lignes.
Il faut donc déprotéger, puis reprotéger juste après avoir effectué l'action souhaitée :
VB:
Private Sub CheckBox2_Click()
Worksheets("Feuil1").Unprotect
[5:12].EntireRow.Hidden = Not CheckBox2
Worksheets("Feuil1").Protect
End Sub

Attention qu'il faut rajouter le mdp si tu veux protéger avec mdp.

Bonne soirée,
Bonjour,

Encore moi.

Ce code est parfait mais pour une autre utilisation, j'ai besoin de le compléter.
Je souhaite que lorsque la case est coché que certaine ligne s'affiche et que d'autre se masque.

J'ai tenté de rajouter "[103:336].EntireRow.Hidden = True CheckBox7" mais ca ne fonctionne pas, j'ai un message "erreur de compilation".

VB:
Private Sub CheckBox7_Click()
Worksheets("Fiche Stratégie").Unprotect
[82:103].EntireRow.Hidden = Not CheckBox7
[103:336].EntireRow.Hidden = True CheckBox7
 Worksheets("Fiche Stratégie").Protect
End Sub

Merci pour votre aide.
Linda
 

xUpsilon

XLDnaute Accro
Bonjour,

Et en retirant Checkbox7 comme suit :
VB:
Private Sub CheckBox7_Click()
Worksheets("Fiche Stratégie").Unprotect
[82:103].EntireRow.Hidden = False
[103:336].EntireRow.Hidden = True
 Worksheets("Fiche Stratégie").Protect
End Sub

Bonne journée,
 

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 220
Membres
103 158
dernier inscrit
laufin