Protéger plusieurs feuilles d'un classeur

Emilie288 -  
via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai vu plusieurs possiblités (via marco) de protéger toutes les feuilles :

Sub protegetout()
For i = 1 To Sheets.Count
With Sheets(i)
.Protect Password:="jojo", DrawingObjects:=True, Contents:=True, Scenarios:=True
.EnableSelection = xlUnlockedCells
End With
Next
End Sub

Mais par contre il est impossible d'utiliser les filtres, de sélectionner une cellule qui est verrouillée...

Merci d'avance de votre aide,

3 réponses

  1. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour Emile

    Pour pouvoir selectionner toutes les cellules tu supprimes la ligne
    .EnableSelection = xlUnlockedCells

    Pour autoriser le tri et le filtre tu completes ainsi l'instruction
    .Protect Password:="jojo", DrawingObjects:=True, Contents:=True, Scenarios:=True , AllowSorting:=True, AllowFiltering:=True

    Cdlmnt
    Via
    0
    1. Emilie288
       
      Super ! Ca fonctionne très bien
      Merci beaucoup
      0
  2. Emilie288
     
    Bonjour,

    J'avais oublié un élément très important pour moi.
    En effet dans ce classeur j'ai un userform et des macros, que je souhaiterai également protéger. Avec la macro si dessus les feuilles sont bien protégées mais on peut toutefois cliquer sur le bouton de contrôle qui lance l'userform...

    Donc je souhaiterai bloquer le bouton de l'userform (feuil 1) en même temps que les feuilles, mais pouvoir moi cliquer sur le bouton de contrôle qui déprotège le classeur...

    merci
    0
  3. via55 Messages postés 14391 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour Emilie

    Tu ne peux pas bloquer le bouton par contre tu peux au début de la macro qui lance l'UF faire afficher une boite de message qui demande un mot de passe et c'est seulement si le mdp est bon qu'on lance l'UF
    exemple :
    mp = InputBox("Entrer votre mot de passe", "Authentification")
    If mp<>"jojo" then msgbox "Mot de passe non incorrect.Accès non autorisé" :exit sub
    Userform1.show


    Cdlmnt
    Via
    0