[Excel/VBA]Changement de protection/All sheet
Résolu
Liodene
-
Liodene -
Liodene -
Bonjour bonjour!
Alors je vous présente mon problème: il y a quelque temps, j'ai fait une classeur Excel pour ma boite traitant les remises de fin d'année etc... Et après avoir complètement remplie le classeur, ils se sont rendus compte que je n'avais pas sécurisé les cellules contenant les formules et que donc, i lfallait que je le fasse...
J'ai réussi à résoudre le problème en mettant à la création automatique de nouvelle feuille le code:
Ceci fonctionne parfaitement. Mais lorsque j'ai voulu faire une macro pour ajouter la protection au page déjà créé, là ça a bloqué... Voici les 2 méthodes que j'ai essayé:
Et:
Le résultat est le même... Erreur 1004. Impossibilité de définir la porpriété Locked de la classe Range.
Merci d'avance pour vos solutions =)
Alors je vous présente mon problème: il y a quelque temps, j'ai fait une classeur Excel pour ma boite traitant les remises de fin d'année etc... Et après avoir complètement remplie le classeur, ils se sont rendus compte que je n'avais pas sécurisé les cellules contenant les formules et que donc, i lfallait que je le fasse...
J'ai réussi à résoudre le problème en mettant à la création automatique de nouvelle feuille le code:
ActiveSheet.Cells.Select Selection.Locked = True ActiveSheet.Range("D18").Locked = False ActiveSheet.Protect Password:="fikou", DrawingObjects:=True, Contents:=True, Scenarios:=True
Ceci fonctionne parfaitement. Mais lorsque j'ai voulu faire une macro pour ajouter la protection au page déjà créé, là ça a bloqué... Voici les 2 méthodes que j'ai essayé:
Sub Change() Dim Sheet As Worksheet For Each Sheet In Worksheets ActiveSheet.Cells.Select Selection.Locked = True ActiveSheet.Range("D18").Locked = False ActiveSheet.Protect Password:="fikou", DrawingObjects:=True, Contents:=True, Scenarios:=True Next Sheet End Sub
Et:
Sub Change() Dim I As Integer Dim ModeCalcul As Integer ModeCalcul = Application.Calculation Application.Calculation = xlCalculationManual Application.ScreenUpdating = False With ActiveWorkbook.Worksheets For I = 2 To .Count - 1 Sheets(I).Select ActiveSheet.Cells.Select Selection.Locked = True ActiveSheet.Range("D18").Locked = False ActiveSheet.Protect Password:="fikou", DrawingObjects:=True, Contents:=True, Scenarios:=True Next I End Sub
Le résultat est le même... Erreur 1004. Impossibilité de définir la porpriété Locked de la classe Range.
Merci d'avance pour vos solutions =)
A voir également:
- [Excel/VBA]Changement de protection/All sheet
- Winget upgrade --all - Guide
- Liste déroulante excel - Guide
- Changer de dns - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
4 réponses
Bonjour,
bonjour Le Pingou
Moi je pense que tu dois inverser les lignes, en effet tu veux déverrouiller une cellule alors que la feuille est déjà verrouillée.
A faire...
EDIT et..essaye plutôt comme ça..
Note: Dans un boucle Each tu n'active pas une feuille tu la sélectionne.
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
bonjour Le Pingou
Moi je pense que tu dois inverser les lignes, en effet tu veux déverrouiller une cellule alors que la feuille est déjà verrouillée.
A faire...
ActiveSheet.Range("D18").Locked = False ActiveSheet.Cells.Select Selection.Locked = TrueA+
EDIT et..essaye plutôt comme ça..
Dim Sheet As Worksheet For Each Sheet In Worksheets Sheet.Cells.Locked = True Sheet.Range("D18").Locked = False Sheet.Protect Password:="fikou", DrawingObjects:=True, Contents:=True, Scenarios:=True Next Sheet
Note: Dans un boucle Each tu n'active pas une feuille tu la sélectionne.
L'expérience instruit plus sûrement que le conseil. (André Gide)
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Ça doit se passer sur le forum pour que tous puisse y participer ou en profiter.
Bonjour,
Juste au passage, votre procédure fait une boucle sur toutes les feuilles et je pense que l'erreur se produit dès qu'il s'agit d'une feuille déjà protégée.
Avant de vérouiller les cellules [Selection.Locked = True
] vous devez ôter la protection de la feuille.
Remède, dans votre code vous déprotégez la feuille et ensuite la protéger.
Salutations.
Le Pingou
Juste au passage, votre procédure fait une boucle sur toutes les feuilles et je pense que l'erreur se produit dès qu'il s'agit d'une feuille déjà protégée.
Avant de vérouiller les cellules [Selection.Locked = True
] vous devez ôter la protection de la feuille.
Remède, dans votre code vous déprotégez la feuille et ensuite la protéger.
Salutations.
Le Pingou
J'ai modifier mon message entre deux. Il s'agit bien de feuille déjà protégé et dans se cas il n'est pas possible de verouiller les cellules, il faut d'abord ôter la protection de la feuille.
J'ai fait le test et j''ai bien reçu : Erreur 1004. Impossibilité de définir la porpriété Locked de la classe Range.
Amicales salutations
Le Pingou.
Et dans l'optique que les feuilles soient protégées..
A+
Edit : Y avait encore une inversion de ligne dans ma Re.. copie. :-(
Amicales salutations
Le Pingou