Protéger classeur excel

Bonjour,

je cherche à protéger un classeur excel (version 2010) dans lequel j'ai mis un formulaire géré en VBA. Je souhaite ainsi que l'on ne puisse pas voir le code, ni changer des valeurs dans les feuilles.

Si je protège avec les méthodes 'standard' (ou alors j'en ai loupé une...), mon code VBA ne peut pas mettre à jour une cellule. Je souhaiterais donc pouvoir laisser la main à mon code, mais interdire toute manip 'manuelle'.

Merci d'avance à qui me dépannera...

--
A+ blux
 "Les cons, ça ose tout.
C'est même à ça qu'on les reconnait"

3 réponses

  1. Bonjour,

    Tu devrais t'intéresser à la méthode Worksheet.Protect et plus particullièrement au paramètre UserInterfaceOnly .
    Ce sujet est souvent abordé sur le net.

    A+
    1
    1. bonjour

      regarde aussi la protection des macros
      ex: a mettre dans tous mes modules

      Option Private Module

      A+
      Maurice
      0
      1. Modérateur
        Pour moi, l'option private sert uniquement à gérer la portée des variables...
        0
    2. Modérateur
      @Gyrus : merci pour l'option, c'est ce que je cherchais.

      J'ai aussi protégé le code, sinon ça ne sert à rien ;-)

      En résumé :

      - protection des feuilles via VBA :


      Private Sub Workbook_Open()
      Dim wSheet As Worksheet
      For Each wSheet In Worksheets
      wSheet.Protect Password:="secret", _
      UserInterFaceOnly:=True
      Next wSheet
      End Sub

      On peut déprotéger les feuilles en saisissant le mot de passe 'secret'.

      - protection du code (visible via ALT-F11) :

      - Ouvrir la fenêtre de code (ALT-F11)
      - Se placer sur le projet VBA du classeur
      - Clic droit, choisir "Propriétés de VBAProject..."
      - Cliquer sur l'onglet "Protection"
      - Cocher la case "Verrouiller le projet pour affichage"
      - Remplir les cases mot de passe

      Il faudra saisir le mot de passe lorsqu'on voudra visualiser le code.

      A+ blux
       "Les cons, ça ose tout.
      C'est même à ça qu'on les reconnait"
      0