OVH Cloud OVH Cloud

Protection de feuille et macros

4 réponses
Avatar
Luc
Bonjour à tous,

Je travaille sur un fichier (Execl 2002) contenant quelques macros, et dont
les cellules verrouillées doivent être inacessibles (J'ai décoché l'option de
verrouillage permettant la sélection des cellules verrouillées).

J'utilise les instructions "ActiveSheet.Unprotect" et "ActiveSheet.protect"
à chacune de mes 3 macros, pour que celles-ci soient utilisables malgrès le
verrouillage.

Mais je rencontre un problème : "ActiveSheet.protect" a l'air de bien
fonctionner tant que je travaille sur le fichier. Seulement, après l'avoir
sauvegardé et l'avoir fermé, lorsque je réouvre le classeur, les cellules
verrouillées sont à nouveau accessibles. Non modifiables, mais accessibles).
Je dois à chaque fois ôter la protection et la rétablir en décochant l'option
adéquate.

j'ai essayé : ActiveSheet.EnableSelection = xlUnlockedCells mais même
résultat. Les cellules verrouillées normalement non accessibles le sont à
nouveau.

Comment se faisse ?
Y a t-il un moyen de rétablir l'option de verrouillage initiale ?

Merci d'avance pour votre aide

4 réponses

Avatar
AV
Il faut mettre l'instruction dans le Workbook_Open

Private Sub Workbook_Open()
With Sheets("Feuil1")
.Protect Contents:=True, UserInterfaceOnly:=True
.EnableSelection = xlUnlockedCells
End With
End Sub

AV
Avatar
Luc
Ok, mais j'ai 2 questions

1- Faut il réécrire le code pour chacune des feuilles ? (j'en ai 40)
2- Comment inclure le code que tu me propose ? Actuellement, j'ai le code
suivant pour chacune des 3 macros:
ActiveSheet.Unprotect
Selection.Font.ColorIndex = 50
ActiveCell.FormulaR1C1 = "CONGES"
ActiveSheet.Protect


Il faut mettre l'instruction dans le Workbook_Open

Private Sub Workbook_Open()
With Sheets("Feuil1")
.Protect Contents:=True, UserInterfaceOnly:=True
.EnableSelection = xlUnlockedCells
End With
End Sub

AV





Avatar
AV
1- Faut il réécrire le code pour chacune des feuilles ? (j'en ai 40)


Tu boucles sur les index de feuilles
Exemple si tes feuilles sont placées de la 1° position à la 40°

Private Sub Workbook_Open()
For i = 1 To 40
With Sheets(i)
.Select
'tes instructions concernant la feuille active
.Protect Contents:=True, UserInterfaceOnly:=True
.EnableSelection = xlUnlockedCells
End With
Next
End Sub

AV

Avatar
Luc
Ah ok ! Merci beaucoup pout on aide :)


1- Faut il réécrire le code pour chacune des feuilles ? (j'en ai 40)


Tu boucles sur les index de feuilles
Exemple si tes feuilles sont placées de la 1° position à la 40°

Private Sub Workbook_Open()
For i = 1 To 40
With Sheets(i)
.Select
'tes instructions concernant la feuille active
.Protect Contents:=True, UserInterfaceOnly:=True
.EnableSelection = xlUnlockedCells
End With
Next
End Sub

AV