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

3 réponses

  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
    1. Maksime568 Messages postés 145 Statut Membre
       
      Vous me conseillez d'utiliser cela pour faire le verrouillage automatique des autres onglets?
      0
    2. 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.
      0
  2. Maksime568 Messages postés 145 Statut Membre
     
    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
  3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    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
    1. Maksime568 Messages postés 145 Statut Membre
       
      visiblement, l'avant dernière ligne ne lui plait pas.

      " l'indice n'appartient pas à la sélection"
      0
      1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > Maksime568 Messages postés 145 Statut Membre
         
        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
      2. Maksime568 Messages postés 145 Statut Membre > cs_Le Pivert Messages postés 8437 Statut Contributeur
         
        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
      3. cs_Le Pivert Messages postés 8437 Statut Contributeur 730 > Maksime568 Messages postés 145 Statut Membre
         
        Cela fonctionne chez moi!






        voilà
        0