Protection à la fermeture

Marlj Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
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. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Si tu n'a pas confiance, pourquoi l'autorises-tu à modifier ?
    Attention, ça peut tourner à la paranoïa !
    0
    1. Marlj Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   21
       
      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. foo
     
    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. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      Cette solution est peut -être pire que le mal !
      Elle oblige à écrire le mot de passe dans le code.
      0
    2. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      Bonsoir
      c'est exact Patrice, mais en protégeant VBA, on peut masquer le code et donc le mot de passe.
      crdlmnt
      0
    3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
       
      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. Marlj Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   21
       
      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. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
       
      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. Marlj Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   21
     
    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
  4. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    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