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 ?
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
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
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
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
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
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
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
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
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
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