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 :
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.
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.
@Linda42 : C'est dans le post#2 de notre ami xUpsillon (que je salue) qu'il faut indiquer que la solution est donnée et non dans le tien (post #3). ??
@+ Eric c
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.
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
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