Protéger plusieurs niveaus de protection selon les onglets

Fermé
Maksime568 Messages postés 144 Date d'inscription mardi 15 avril 2014 Statut Membre Dernière intervention 28 novembre 2022 - 12 oct. 2020 à 15:09
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 - 13 oct. 2020 à 10:54
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

Configuration: Windows / Firefox 81.0
A voir également:

3 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
12 oct. 2020 à 16:00
Bonjour,

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


0
Maksime568 Messages postés 144 Date d'inscription mardi 15 avril 2014 Statut Membre Dernière intervention 28 novembre 2022
12 oct. 2020 à 16:15
Vous me conseillez d'utiliser cela pour faire le verrouillage automatique des autres onglets?
0
Maksime568 Messages postés 144 Date d'inscription mardi 15 avril 2014 Statut Membre Dernière intervention 28 novembre 2022
Modifié le 12 oct. 2020 à 16:28
ok, ça marche presque, car du coup je bloque aussi mon nouvel onglet dès sa création.
0
Maksime568 Messages postés 144 Date d'inscription mardi 15 avril 2014 Statut Membre Dernière intervention 28 novembre 2022
12 oct. 2020 à 17:01
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
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
12 oct. 2020 à 18:57
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

0
Maksime568 Messages postés 144 Date d'inscription mardi 15 avril 2014 Statut Membre Dernière intervention 28 novembre 2022
13 oct. 2020 à 09:54
visiblement, l'avant dernière ligne ne lui plait pas.

" l'indice n'appartient pas à la sélection"
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729 > Maksime568 Messages postés 144 Date d'inscription mardi 15 avril 2014 Statut Membre Dernière intervention 28 novembre 2022
Modifié le 13 oct. 2020 à 10:03
C'est normal si la feuille n'existe pas!

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
0
Maksime568 Messages postés 144 Date d'inscription mardi 15 avril 2014 Statut Membre Dernière intervention 28 novembre 2022 > cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024
13 oct. 2020 à 10:43
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?
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729 > Maksime568 Messages postés 144 Date d'inscription mardi 15 avril 2014 Statut Membre Dernière intervention 28 novembre 2022
Modifié le 13 oct. 2020 à 10:58
Cela fonctionne chez moi!






voilà
0