Protéger plusieurs niveaus de protection selon les onglets
Maksime568
Messages postés
145
Statut
Membre
-
cs_Le Pivert Messages postés 8437 Statut Contributeur -
cs_Le Pivert Messages postés 8437 Statut Contributeur -
Bonjour,
J'ai un fichier avec ajout d'un onglet via une macro par bouton.
Mon nouvel onglet s'insère en position 2 des onglets, il n'y as un accès de saisie que sur certaine cellules.
Mon souhaite serait qu'après la création de ce nouvel onglet, les onglets suivants soit protégé d'un niveau différent, c'est à dire qu'il n'y as pas possibilité de supprimer les données des autres onglets. ma méthode est d'empêcher la sélection des cellules verrouillés ou non verrouillées sur ces onglets.
cependant je n'arrive pas à l'ajouter dans ma macro de façon automatique à l'ensemble des autres onglets.
une idée?
voici le fichier:
https://www.cjoint.com/c/JJmneITmM1j
J'ai un fichier avec ajout d'un onglet via une macro par bouton.
Mon nouvel onglet s'insère en position 2 des onglets, il n'y as un accès de saisie que sur certaine cellules.
Mon souhaite serait qu'après la création de ce nouvel onglet, les onglets suivants soit protégé d'un niveau différent, c'est à dire qu'il n'y as pas possibilité de supprimer les données des autres onglets. ma méthode est d'empêcher la sélection des cellules verrouillés ou non verrouillées sur ces onglets.
cependant je n'arrive pas à l'ajouter dans ma macro de façon automatique à l'ensemble des autres onglets.
une idée?
voici le fichier:
https://www.cjoint.com/c/JJmneITmM1j
Configuration: Windows / Firefox 81.0
A voir également:
- Protéger plusieurs niveaus de protection selon les onglets
- Proteger cellule excel - Guide
- Protéger un dossier par mot de passe - Guide
- Restaurer les onglets chrome - Guide
- K9 web protection - Télécharger - Contrôle parental
- Ouvrir plusieurs onglets en même temps - Guide
3 réponses
Bonjour,
une piste a mettre dans ThisWorkbook. Se déclenchera à chaque activation d'une feuille:
une piste a mettre dans ThisWorkbook. Se déclenchera à chaque activation d'une feuille:
Option Explicit Private Sub Workbook_SheetActivate(ByVal Sh As Object) 'ton code End Sub
Maksime568
Messages postés
145
Statut
Membre
Vous me conseillez d'utiliser cela pour faire le verrouillage automatique des autres onglets?
Maksime568
Messages postés
145
Statut
Membre
ok, ça marche presque, car du coup je bloque aussi mon nouvel onglet dès sa création.
J'ai tenté cela mais ça ne fonctionne pas.
le but étant d'appliquer le verrouillage au feuilles ne portant pas comme nom la date du jour.
Private Sub Workbook_Open()
Dim onglet As Worksheet
'boucle sur toutes les feuilles du classeur
For Each onglet In Application.ActiveWorkbook.Worksheets
If onglet.Name <> Format(Date, "dd-mm-yy") Then
ActiveSheet.Unprotect
ActiveSheet.protect DrawingObjects:=False, Contents:=True, Scenarios:=False
End If
Next onglet
End Sub
le but étant d'appliquer le verrouillage au feuilles ne portant pas comme nom la date du jour.
Private Sub Workbook_Open()
Dim onglet As Worksheet
'boucle sur toutes les feuilles du classeur
For Each onglet In Application.ActiveWorkbook.Worksheets
If onglet.Name <> Format(Date, "dd-mm-yy") Then
ActiveSheet.Unprotect
ActiveSheet.protect DrawingObjects:=False, Contents:=True, Scenarios:=False
End If
Next onglet
End Sub
comme ceci:
Option Explicit Private Sub Workbook_SheetActivate(ByVal Sh As Object) Dim onglet As Worksheet For Each onglet In Application.Worksheets ActiveSheet.Protect Next onglet Sheets(Format(Date, "dd-mm-yy")).Unprotect End Sub
C'est normal si la feuille n'existe pas!
Pour y remédier 2 méthodes:
méthode radicale:
méthode douce:
Voilà
@+ Le Pivert
Pour y remédier 2 méthodes:
méthode radicale:
Option Explicit Private Sub Workbook_SheetActivate(ByVal Sh As Object) Dim onglet As Worksheet On Error Resume Next For Each onglet In Application.Worksheets ActiveSheet.Protect Next onglet Sheets(Format(Date, "dd-mm-yy")).Unprotect End Sub
méthode douce:
Option Explicit Private Sub Workbook_SheetActivate(ByVal Sh As Object) Dim onglet As Worksheet For Each onglet In Application.Worksheets ActiveSheet.Protect Next onglet For Each onglet In Application.Worksheets If onglet.Name = Format(Date, "dd-mm-yy") Then Sheets(Format(Date, "dd-mm-yy")).Unprotect End If Next onglet End Sub
Voilà
@+ Le Pivert
Merci de votre temps.
Alors, je n'ai pas de bug, cependant cela ne protège pas les autres feuilles.
En plus, je crois que j'ai fait une erreur dans mon raisonnement qui va planter le truc.
L'autre solution serait de toujours déprotéger l'onglet en position 2 et de verrouiller tous les autres.
serait-ce plus simple?
Alors, je n'ai pas de bug, cependant cela ne protège pas les autres feuilles.
En plus, je crois que j'ai fait une erreur dans mon raisonnement qui va planter le truc.
L'autre solution serait de toujours déprotéger l'onglet en position 2 et de verrouiller tous les autres.
serait-ce plus simple?

