formateur informatique

Autorisation de la saisie en fonction de l'utilisateur

Accueil  >  Bureautique  >  Excel  >  Excel VBA  >  Autorisation de la saisie en fonction de l'utilisateur
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 :


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,
Base de données Excel avec des autorisations spéciales selon les utilisateurs

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.

Cellules autorisées seulement pour les administrateurs en VBA Excel

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,
Créer des autorisations en fonction des utilisateurs connectés avec Excel

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,
Modification non autorisée pour utilisateur actif sur la feuille Excel

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.

 
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