Proteger toutes les feuilles d'un classeur

Salut les experts !

Voici un code pour protéger toutes les feuilles d'un classeur. Aussi, pour ôter la protection de toutes les feuilles d'un simple clic

Sub Locked()
For i = 1 To Sheets.Count
     Sheets(i).Protect Password:="123456"
   Next
End Sub

Sub Unlocked()
For i = 1 To Sheets.Count
     Sheets(i).Unprotect Password:="123456"
   Next
End Sub

Ce que j'aurais aimé :

  • Quand je clique sur le bouton, je voudrais qu'on me demande le mot de passe, plutôt qu'il soit stocké dans VB, idem pour ôter la protection; car là le code ne présente pas vraiment un intérêt
  • Pour ma culture, comment protéger par un mot de passe un module, afin que le mot de passe ne soit pas visible pas d'autres utilisateurs
  • De par votre experience, une idée pour rendre ce code "meilleur" ou plus pratique ou plus efficace ?

Merci

Bonjour,

Dans la commande du bouton tu peux utiliser cette méthode:

Private Sub CommandButton1_Click()
Dim Password As String
Password = Application.InputBox(prompt:="Entrez le mot de passe", Title:="Verrouillage", Default:="", Type:=2)
If Not (Password = "123456") Then
MsgBox "Erreur mot de passe, vérifiez votre saisie", , "test"  ' ALERTE ERREUR MOT DE PASSE
Exit Sub  ' ON SORT DE LA MACRO SI ERREUR
End If

' ON CONTINUE ET ON DEPROTEGE SI BON MOT DE PASSE.
For i = 1 To Sheets.Count
     Sheets(i).UnProtect Password:="123456"
   Next
End Sub

Pour le reste tu peux utiliser un mot de passe sur le "Projet VBA" ainsi les lignes de code ne sont pas apparentes et personne ne verra le mot de passe des onglets.

Par contre évites de perdre ton mot de passe du projet vba …….

Salut Xmenpl,

Je te remercie pour ta réponse rapide.

En revanche, quand je clique sur le bouton, Excel me demande bien le mot de passe, mais après l'avoir saisi rien ne passe (enfin je ne vois pas que les feuilles sont protégées)

Voulais-tu dire que je dois incorporer ton code à mon code ? Si oui, j'aimerais bien que tu m'aides pour la syntaxe

Enfin, comment je n'ai pas très bien saisi comment le déverrouillage se passe ?

Est-ce que le code est prévu pour un bouton et à chaque fois que j'appuies il protègera les feuilles si elles ne le sont pas, et inversement si elles sont protégées ?

Salut Xmenpl,

Je te remercie pour ta réponse rapide.

En revanche, quand je clique sur le bouton, Excel me demande bien le mot de passe, mais après l'avoir saisi rien ne passe (enfin je ne vois pas que les feuilles sont protégées)

Voulais-tu dire que je dois incorporer ton code à mon code ? Si oui, j'aimerais bien que tu m'aides pour la syntaxe

Enfin, comment je n'ai pas très bien saisi comment le déverrouillage se passe ?

Est-ce que le code est prévu pour un bouton et à chaque fois que j'appuies il protègera les feuilles si elles ne le sont pas, et inversement si elles sont protégées ?

Le code que j'ai donné inclu tes lignes aprés le "end if" il continue avec tes lignes de déprotection.

Par contre dans l'état actuel le bouton ne fait que déprotéger.

C'est pas forcément utile d'utiliser le même bouton pour reprotéger car les utilisateurs oublient souvent de reprotéger avant de fermer.

Pour la reprotection des feuilles je te conseilles de mettre tes lignes vba pour reprotéger dans le code vba du Workbook.

Private Sub Workbook_BeforeClose(Cancel As Boolean)
'Ton code ici ainsi à chaque fermeture du fichier les feuilles sont reprotégées. 
End Sub

Parfait, j'ai relu quelques fois, j'ai compris et cela fonctionne

Pour encore se parfaire, lorsque je clique sur le bouton pour déprotéger les cellules, Excel me ramène à la dernière feuille de mon classeur. J'aimerais bien rester sur la feuille où se trouve le bouton...possible ?

Je te remercie pour ton temps

allez encore une question pour la route et pour conclure

Est-il simple de demander à Excel de ne pas afficher les caractères lorsque je tape mon mot de passe pour déprotéger, toujours des curieux…

Parfait, j'ai relu quelques fois, j'ai compris et cela fonctionne

Pour encore se parfaire, lorsque je clique sur le bouton pour déprotéger les cellules, Excel me ramène à la dernière feuille de mon classeur. J'aimerais bien rester sur la feuille où se trouve le bouton...possible ?

Je te remercie pour ton temps

Bonjour, il suffit de retourner sur la feuille que tu souhaites à la fin de la macro du bouton.

With Sheets("Nom-de-ta-feuille")
    .Activate
End With

allez encore une question pour la route et pour conclure

Est-il simple de demander à Excel de ne pas afficher les caractères lorsque je tape mon mot de passe pour déprotéger, toujours des curieux…

Je ne penses pas que ce soit possible avec un "imput-box" il aurait faudrait passer par un userform et changer ses attributs.

A voir si quelqu'un d'autre à déjà fait ? là ce n'est pas de ma compétence.

Merci beaucoup, on va s'arrêter là je pense

C'est déjà super

Merci encore

Rechercher des sujets similaires à "proteger toutes feuilles classeur"