Protection à la fermeture

Bonjour,

J'ai un fichier Excel (2010) avec des cellules verrouillées et la feuille protégée avec un mot de passe. Plusieurs personnes auront accès à ce fichier, mais une seule aura la permission de déverrouiller la feuille. Cependant, comme je ne suis pas certaine que cette personne reprotègera la feuille en fermant le fichier, j'aimerais savoir s'il existe une façon que la protection se réactive automatiquement à la fermeture du fichier.

Merci de vos lumières.

4 réponses

  1. Si tu n'a pas confiance, pourquoi l'autorises-tu à modifier ?
    Attention, ça peut tourner à la paranoïa !
    0
    1. Merci, mais je cherchais une solution! :)
      Mais pour ton info, ce n'est pas un problème de confiance, mais étant donné qu'il y a beaucoup de formules dans le fichier, c'est seulement pour éviter que quelqu'un efface des formules par inadvertance, étant donné que plusieurs personnes aura accès à ce fichier. Voilà.
      0
  2. Bonjour

    on peux le faire dans le ThisWorkbook

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
    ' ----------- mettre ta foumule de protection
    end sub

    A+

    Maurice
    0
    1. Cette solution est peut -être pire que le mal !
      Elle oblige à écrire le mot de passe dans le code.
      0
    2. Contributeur
      Bonsoir
      c'est exact Patrice, mais en protégeant VBA, on peut masquer le code et donc le mot de passe.
      crdlmnt
      0
    3. Effectivement, mais je reste persuadé que sous Excel, les mots de passe posent plus de problèmes qu'ils n'apportent de solutions !
      0
    4. En fait le mot de passe n'a pas d'importance. Il pourrait ne pas en avoir. C'est surtout pour éviter que les gens efface des formules par erreur. Est-ce qu'il y aurait une autre solution plus simple, sans mot de passe? Merci.
      0
    5. Contributeur
      Re
      puisqu'il ne s'agit que de protéger les formules, je pense que l'utilisateur autorisé n'a pas à les modifier.
      Alors pourquoi ne pas simplement protéger la feuille en verrouillant uniquement les cellules avec formules?
      Il ne sera pas utile de déverrouiller pour utiliser les données
      crdlmnt
      0
  3. Merci pour la réponse rapide, mais je ne suis pas totalement familière avec le ThisWorkbook.

    Qu'est-ce que tu entends par "mettre la formule de protection", est-ce le mot de passe?

    Merci
    0
    1. Bonjour,

      Par "mettre la formule de protection", il faut comprendre écrire le code VBA qui éffectue la protection, par exemple :
      Private Sub Workbook_BeforeClose(Cancel As Boolean)
      'Protection de toutes les feuilles du classeur à la fermeture
      Const MotDePasseFeuille As String = "Mon mot de passe"
        Call Protège_les_Feuilles(MotDePasseFeuille)
      End Sub
      
      Private Sub Protège_les_Feuilles(Optional MotDePasse As String)
      ' Active la protection de toutes les feuilles du classeur
      '
      ' Arguments:  MotDePasse          [in] Mot de passe (chaine)
      '
      Dim wsh As Worksheet               'Feuille à protéger
      Dim Mode_de_Calcul As Integer      'Mode de calcul initial (manuel, auto, semi-auto)
      Dim Flg_Màj_Ecran As Boolean       'Etat initial de l'actualisation automatique de l'écran
      'Arrêter l'actualisation automatique de l'écran et les calculs
      Flg_Màj_Ecran = Application.ScreenUpdating
      Mode_de_Calcul = Application.Calculation
      Application.ScreenUpdating = False
      Application.Calculation = xlCalculationManual
      'Protéger toutes les feuilles
      For Each wsh In Worksheets
        If MotDePasse <> "" Then
          wsh.Protect Password:=MotDePasse, DrawingObjects:=True, Contents:=True, Scenarios:=True
        Else
          wsh.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
        End If
      Next
      'Restaurer le contexte initial
      Application.ScreenUpdating = Flg_Màj_Ecran
      Application.Calculation = Mode_de_Calcul
      End Sub 
      0