formateur informatique

Protéger ou déprotéger toutes les feuilles du classeur

Accueil  >  Bureautique  >  Excel  >  Excel VBA  >  Protéger ou déprotéger toutes les feuilles du classeur
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Protéger et déprotéger

C'est une fois encore la délicieuse et précieuse boucle VBA For Each qui va nous ouvrir la voie pour ajouter une fonctionnalité intéressante dans l'environnement Excel. Il est question de créer deux boutons. Le premier doit permettre de protéger toutes les feuilles du classeur avec mot de passe. Le second doit permettre de supprimer instantanément toutes les protections en vigueur sur les feuilles du classeur actif.

Classeur Excel à télécharger
Pour développer ces nouvelles fonctionnalités, nous suggérons d'appuyer les travaux sur un classeur Excel hébergeant plusieurs feuilles protégées et à juste titre. Nous découvrons un classeur Excel constitué de cinq feuilles.

Classeur Excel constitué de plusieurs feuilles protégées par mot de passe
  • En bas de la fenêtre Excel, cliquer sur l'onglet Facturation pour activer sa feuille,
Comme son nom l'indique, cette feuille héberge une solution pour facturer les clients.
  • Cliquer sur l'une des cellules de la colonne G, par exemple en G6,
  • Puis, enfoncer la touche Suppr du clavier,
Modification interdite sur feuille Excel protégée par mot de passe

Comme vous pouvez le constater, la modification est refusée et pour cause ! Cette cellule comme les autres de la colonne G entre autres, porte une formule. Ces cellules sont donc verrouillées et cet état est rendu actif car la feuille est elle-même protégée.
  • Cliquer maintenant sur une cellule de la colonne E, par exemple E6,
  • Puis, saisir une quantité comme : 3 et valider avec la touche Entrée,
Cette fois, la modification est autorisée. En effet, bien que la feuille soit protégée et comme les cellules de cette colonne ne portent pas de formules, l'utilisateur est autorisé à intervenir pour définir la quantité de produits achetés par le client. C'est ainsi que la facture finale se construit automatiquement.

Il en va de même sur la majorité des autres feuilles de ce classeur. Toutes les cellules portant des calculs sont protégées tandis que toutes les autres sont libérées. Mais si l'utilisateur souhaite engager des modifications générales sur ces feuilles, une fonctionnalité consistant à déverrouiller massivement les protections peut s'avérer intéressante. Et c'est elle que nous souhaitons mettre en place.

Créer les procédures VBA
Les procédures à créer doivent être enregistrées dans le modèle Excel et doivent être associées à des boutons de ruban. Ainsi, elles seront disponibles pour toutes les utilisations d'Excel.
  • Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Excel,
  • Dans l'explorateur de projet sur la gauche, cliquer sur l'élément VBA Project (PERSONAL.XLSB),
Modèle VBA Excel pour macros toujours disponibles

Il s'agit du modèle Excel. Ainsi, nous le désignons explicitement.
  • En haut de l'éditeur, cliquer sur le menu Insertion,
  • Dans les propositions, choisir l'option Module,
Ainsi, nous créons un nouveau module que nous associons au modèle. Il est destiné à recevoir les deux macros VBA Excel devant permettre de protéger et déprotéger toutes les feuilles du classeur. Sa feuille de code apparaît au centre de l'écran. Naturellement, elle est encore vierge à ce stade.
  • Dans la feuille de code, créer les procédures deProtegerTout et protegerTout, comme suit :
Sub protegerTout()

End Sub

Sub deProtegerTout()

End Sub


Ôter toutes les protections
Nous proposons de débuter par l'implémentation du code VBA de la seconde procédure, celle devant permettre de lever tous les verrous de protection sur toutes les feuilles du classeur actif. Pour cela, nous devons déclarer une variable représentant une feuille au sens large. Ainsi, nous l'utiliserons pour parcourir la collection des feuilles du classeur. Nous avons aussi besoin d'une variable capable de réceptionner le mot de passe de protection à demander à l'utilisateur.
  • Dans la procédure deProtegerTout, ajouter les déclarations et affectations suivantes :
Sub deProtegerTout()
Dim feuille As Worksheet: Dim motPasse As String

motPasse = InputBox("Mot de passe de déprotection ?")

End Sub


Nous déclarons donc un objet de type Worksheet pour représenter n'importe quelle feuille du classeur. Puis, nous déclarons la variable motPasse comme un texte (As String). Et nous l'utilisons pour recevoir la saisie de l'utilisateur suite à la sollicitation engagée par une boîte de dialogue InputBox qui lui offre une zone de saisie.

Nous devons maintenant parcourir chacune des feuilles du classeur pour ôter les protections respectives en tenant compte du mot de passe en vigueur divulgué par l'utilisateur. Pour cela et comme nous l'avons annoncé, nous avons besoin d'amorcer une boucle For Each.
  • A la suite du code de la procédure, créer la boucle For Each suivante :
...
For Each feuille In Worksheets
feuille.Unprotect motPasse
Next feuille
...


Grâce à notre objet feuille, nous parcourrons la collection des feuilles du classeur (Worksheets). Et pour chaque feuille passée en revue, nous exploitons la méthode Unprotect avec le mot de passe en paramètre pour faire sauter toutes les protections.

Désormais, nous devons actionner ce code par le biais d'un bouton à placer dans l'un des rubans, en haut de la fenêtre Excel.
  • Enregistrer les modifications (CTRL + S) et revenir sur l'une des feuilles du classeur (ALT + Tab),
  • Cliquer droit n'importe où sur le ruban actif,
  • Dans le menu contextuel, choisir la commande Personnaliser le ruban,
La boîte de dialogue des options Excel apparaît.
  • Déployer la liste déroulante du centre,
  • Dans les propositions, choisir la catégorie Macros,
  • Dans la liste du dessous, sélectionner la macro PERSONAL.XLSB!deProtegerTout,
  • Puis la glisser dans un groupe d'un ruban,
Ajouter la macro VBA de déprotection des feuilles dans un ruban Excel

Ensuite, il convient d'exploiter le bouton Renommer en bas de la boîte de dialogue pour lui attribuer un intitulé explicite et une icône représentative.
  • Dès lors, cliquer sur le bouton Ok pour valider la création du bouton,
  • Puis, cliquer sur l'onglet du ruban hébergeant ce nouveau bouton,
  • Enfin, cliquer sur ce bouton pour déverrouiller toutes les feuilles du classeur Excel,
  • A l'invite, taper le mot de passe : 1319,
  • Revenir sur la feuille nommée facturation,
  • Sélectionner de nouveau la cellule G6,
  • Puis, enfoncer de nouveau la touche Suppr du clavier,
Cette fois, plus aucun message d'interdiction ne s'interpose. La cellule portant une formule, bien que verrouillée, a été vidée de son contenu puisque la feuille n'est plus protégée. Cela signifie que sa formule est perdue.
  • Réaliser le raccourci clavier CTRL + Z pour annuler la suppression,
Vous pouvez effectuer le même constat en tentant des modifications sur des cellules portant des formules sur d'autres feuilles. Bien qu'étant originellement verrouillées, puisque la protection de chaque feuille a sauté, elles ne sont plus préservées de toute intrusion illicite.

Protéger toutes les feuilles
Maintenant, nous proposons de créer la procédure qui réalise le processus inverse. Elle doit protéger toutes les feuilles avec un même mot de passe. Le mécanisme est identique. Seule la méthode associée à l'objet feuille change.
  • Revenir dans l'éditeur VBA Excel,
  • Copier le code de la procédure deProtegerTout dans la procédure protegerTout,
  • Puis, l'adapter comme suit :
Sub protegerTout()
Dim feuille As Worksheet: Dim motPasse As String

motPasse = InputBox("Mot de passe de protection?")

For Each feuille In Worksheets
feuille.Protect motPasse
Next feuille
End Sub


Dès lors, il convient d'associer cette procédure à un bouton de ruban. Après avoir cliqué sur ce dernier, si vous tentez les mêmes modifications que précédemment sur les cellules verrouillées, l'intervention est refusée. Les cellules originellement déverrouillées restent disponibles quant à elles.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn