Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Autorisations selon l'utilisateur
Dans le cadre d'un
travail collaboratif ou même d'un
classeur Excel partagé sur un serveur, il est possible d'accorder des
permissions spéciales selon l'utilisateur qui est connecté au fichier. Pour cela, le
VBA offre une fonction particulière qui permet de reconnaître l'identité de la personne active.
Classeur Excel à télécharger
Pour démontrer cette nouvelle astuce, nous proposons d'agir à partir d'un classeur émettant déjà des
règles de validité sur certaines cellules, pour n'autoriser que certains utilisateurs.
- Télécharger le classeur privileges-utilisateurs.xlsm en cliquant sur ce lien,
- Cliquer droit sur le fichier réceptionné,
- En bas du menu contextuel, choisir la commande Propriétés,
- En bas de la boîte de dialogue, cocher la case Débloquer et valider par Ok,
- Puis, double cliquer sur le fichier pour l'ouvrir dans Excel,
Nous découvrons un tableau recensant des clients. Dans les deux dernières colonnes figurent les paires Identifiant / Mot de passe, pour chacun.
Concept
Nous proposons de planter le décor. Dans les quatre premières colonnes du tableau, chaque collaborateur doit être autorisé à intervenir. D'ailleurs si vous y tentez une modification, aucune restriction ne se soulève. Dans les deux dernières colonnes sur fond jaune en revanche, seuls des utilisateurs spéciaux, type administrateurs, doivent être autorisés à enclencher des modifications. D'ailleurs, si vous tentez une modification d'un identifiant ou d'un mot de passe, une alerte se dresse.
Vous n'avez d'autre choix que d'abandonner la saisie. C'est une
règle de validité qui est en vigueur sur cette plage et nous allons le constater.
- Cliquer sur la cellule d'un identifiant ou d'un mot de passe,
- En haut de la fenêtre Excel, cliquer sur l'onglet Données pour activer son ruban,
- Dans la section Outils de données du ruban, cliquer sur le bouton Validation des données,
Comme vous pouvez le voir, cette règle n'autorise que deux utilisateurs reconnus par leur nom de compte (AdminVisio ou AdminBO). Cette information est prélevée en
cellule I6.
- Cliquer sur le bouton Annuler pour revenir sur la feuille,
A ce stade, cette
cellule I6 renvoie une erreur. En effet, elle appelle une fonction qui n'existe pas encore. Vous pouvez le constater en la sélectionnant et en consultant sa barre de formule :
=Utilisateur()
Nom de l'utilisateur
Cette fonction que nous devons construire est toute simple. Elle doit elle-même appeler une
fonction VBA particulière qui renseigne sur le
compte actif. Elle ne peut pas être utilisée directement dans une règle de validité. C'est la raison pour laquelle nous proposons de restituer son résultat en
cellule I6. Ce n'est d'ailleurs pas plus mal pour la bonne compréhension du mécanisme.
- Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Excel,
- Dans l'explorateur de projet sur la gauche, double cliquer sur l'élément Module1,
- Dans la feuille de code au centre, créer la fonction Utilisateur, comme suit :
Function Utilisateur()
Utilisateur = Environ("username")
End Function
Selon la valeur qui lui est passée en paramètre, la
fonction VBA Environ est capable de renvoyer tout un tas d'informations sur le système. Par exemple, avec les
arguments OS et
ComputerName, elle renseigne respectivement sur le
système d'exploitation et le
nom de l'ordinateur. Vous l'avez compris, avec la
valeur UserName, elle retourne le nom ou compte de l'
utilisateur actif.
Maintenant, nous avons besoin de forcer le recalcul de la formule sur la feuille.
- Enregistrer les modifications (CTRL + S) et basculer sur la feuille Excel (ALT + Tab),
- Cliquer sur la cellule I6 pour la sélectionner,
- Enfoncer la touche F2 du clavier pour activer la modification de la cellule,
- Puis, valider par la touche Entrée du clavier,
Une alerte apparaît cependant mais elle est tout à fait logique. En effet, la même règle de validité que celle que nous avons consultée, est en vigueur sur cette cellule.
- Cliquer alors sur le bouton Annuler,
Comme vous pouvez le voir, tout rentre dans l'ordre. Le nom de l'utilisateur actif apparaît désormais en
cellule I6. Malgré tout, rien ne change à ce stade. Comme l'utilisateur que vous êtes ne correspond à aucun des deux mentionnés dans la règle de validité, la modification sur les cellules précieuses vous est encore interdite. Mais pour prouver la bonne reconnaissance des
informations de compte par cette
fonction VBA, nous proposons de faire évoluer cette règle. En effet, c'est volontairement que nous n'avons pas protégé la feuille. Si nous l'avions fait, seuls les deux utilisateurs mentionnés par la règle auraient pu intervenir.
- Sélectionner les cellules des deux dernières colonnes, soit la plage F6:G14,
- Dans le ruban Données, cliquer sur le bouton Validation des données,
- Puis, vous ajouter en tant qu'utilisateur autorisé en faisant évoluer la règle, comme suit :
=OU($I$6="AdminViso"; $I$6="AdminBO"; $I$6="stefrs")
- Valider cette modification en cliquant sur le bouton Ok,
Désormais, vous avez le plaisir de constater que vous avez intégré une caste très spéciale, puisqu'au même titre que les deux administrateurs, vous avez les privilèges nécessaires pour modifier les informations sur les identifiants et les mots de passe.