COMMENT CRÉER UNE AUTHENTIFICATION PAR MOT DE PASSE POUR INTERDIRE L’ACCÈS À CERTAINES FEUILLES EXCEL

Souvent lorsque l’on crée des fichiers de travail sur Excel, nous aimerions faire en sorte que certaines feuilles de calculs puissent n’être accessibles qu’à certains utilisateurs bien précis et inaccessibles pour les autres, et sans pour autant avoir à masquer ces feuilles de travail. Dans ce tutoriel, nous allons donc voir comment mettre en place un système d’authentification par mot de passe qui va ensuite nous permettre de donner des droits d’accès pour les utilisateurs. Pour cela, nous utiliserons VBA, qui permet de démultiplier les fonctionnalités offertes par EXCEL.

 

Téléchargement

Vous pouvez télécharger le fichier d'exemple de cet article en cliquant sur le lien suivant :

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
 

 

Tutoriel Vidéo

 

 

1. Création de la table de gestion des droits

Pour illustrer ce tutoriel, nous allons utiliser un simple classeur composé de quatre feuilles de calculs :

Excel formation - Authentifier utilisateurs - 01

Nous retrouvons ici une première feuille qui est la feuille d’accueil principale, laquelle sera accessible à tous les utilisateurs.

Puis deux feuilles de travail qui ne nous serviront ici que de simples feuilles de tests.

Et enfin, dans la dernière feuille, qui va particulièrement nous intéressa ici nous paramètrerons les différents aspects de la gestion des accès aux feuilles de calcul.

Rendons-nous dans cette feuille.

Excel formation - Authentifier utilisateurs - 02

Celle-ci est composée de trois éléments principaux.

Excel formation - Authentifier utilisateurs - 03

Tout d’abord, nous retrouvons une simple cellule dans laquelle nous venons saisir le nom de l’utilisateur connecté.

Il s’agit pour le moment d’une simple cellule que nous venons alimenter à la main, mais évidemment, nous verrons par la suite comment remplir celle-ci de manière automatique.

Excel formation - Authentifier utilisateurs - 04

Dans le second de ces trois éléments nous retrouvons la table de gestion des droits.

Dans celle-ci, nous retrouvons simplement des colonnes qui reprennent les différents utilisateurs autorisés à utiliser le fichier EXCEL (Alexandre, Émily, Lou et Nina).

Dans la première ligne, nous retrouvons les mots de passe liés à chacun des utilisateurs.

Et enfin, sur chacune des lignes suivantes, nous venons préciser si celui-ci doit avoir un accès à la feuille.

Lorsque nous voulons lui laisser accès à la feuille, nous saisissons VRAI.

Dans le cas contraire, nous laissons la cellule vide (mais nous pourrions également saisir FAUX).

Nous constatons par exemple dans cette table que seul ALEXANDRE pour accéder à l’ensemble des pages du classeur

Excel formation - Authentifier utilisateurs - 05

Et pour finir dans la troisième partie de cette feuille de calcul, nous retrouvons une dernière table dans laquelle vont être insérer les paramètres propres à l’utilisateur en cours d’utilisation du fichier.

Les éléments de la seconde colonne sont récupérés par une simple formule Excel INDEX-EQUIV (toutes les informations sur l’utilisation de cette formule sont disponibles dans ce tutoriel) :

 

 =INDEX(D5:J5;EQUIV(_utilisateur;$D$4:$J$4;)) 

 

Excel formation - Authentifier utilisateurs - 06

De cette manière, lorsque nous aurons actualisé le nom de l’utilisateur connecté, il suffira de consulter les informations disponibles dans cette petite table pour obtenir les droits d’accès de celui-ci.

Maintenant que nous avons vu comment fonctionne cette page de gestion des droits, voyons comment mettre en place les restrictions, en utilisant le langage de programmation VBA.

Les points du langage que nous aborderons ici sont relativement simples à comprendre, mais vous pourrez évidemment mieux les appréhender si vous avez au préalable suivi la formation gratuite disponible sur Excelformation.fr.

 

2. Créer le formulaire d’authentification

Tout d’abord pour pouvoir se connecter au classeur, nous allons devoir proposer une interface de login à l’utilisateur.

Pour cela, rendons-nous dans l’éditeur de code VBA (depuis le menu Développeur, ou par la combinaison de touches [Alt]+[f11] :

Cela étant fait, nous créons un simple formulaire (menu Insertion / Formulaire)

Excel formation - Authentifier utilisateurs - 07

Ensuite, nous nous rendons dans les propriétés de celui-ci afin de lui donner un nom (Name : connect) et un titre (Caption : Indentification)

Excel formation - Authentifier utilisateurs - 08

Dans celui-ci, nous insérons les éléments suivants :

  • Deux zones de textes que nous appelons « TextBox_utilisateur » et « TextBox_motPasse »

Excel formation - Authentifier utilisateurs - 09

  • Les deux intitulés correspondants : « Utilisateur » et « Mot de passe » :

Excel formation - Authentifier utilisateurs - 10

  • Et enfin deux boutons « CommandButton_valider » et « CommandButton_fermer »

Excel formation - Authentifier utilisateurs - 11

Lorsque le formulaire est correctement dessiné, nous pouvons commencer à développer ces différentes parties.

Tout d’abord, la partie la plus simple à mettre en place est de rendre opérant le bouton Fermer.

Pour cela, nous double-cliquons sur celui-ci afin de créer l’évènement à lancer lorsque nous appuyons sur celui-ci.

Excel formation - Authentifier utilisateurs - 12

Étant donné que nous souhaitons fermer le formulaire, nous saisissons simplement la ligne suivante dans l’évènement :

 

Private Sub CommandButton_fermer_Click()
    Unload Me
End Sub

 

Ensuite, nous passons au second bouton, c’est-à-dire l’action à effectuer lorsque l’utilisateur valide la connexion.

Excel formation - Authentifier utilisateurs - 13

Pour commencer, nous allons regarder si le champ TextBox_utilisateur est correctement rempli, lorsque ce n’est pas le cas, nous quittons simplement la procédure pour inviter l’utilisateur à ressaisir un nom et un mot de passe.

 

Private Sub CommandButton_valider_Click()
    If TextBox_utilisateur = "" Then Exit Sub
End Sub

 

Ensuite, lorsque nous avons passé cette étape, nous allons insérer le nom saisi dans la cellule qui correspond sur la feuille de calcul.

Pour l’appeler facilement, nous allons donner un nom à celle-ci (par exemple « _utilisateur ») directement depuis la zone de nom :

Excel formation - Authentifier utilisateurs - 14

Pour alimenter celle-ci, nous utilisons nous utilisons simplement ce nom entre crochets :

 

    [_utilisateur] = TextBox_utilisateur

 

Maintenant nous allons passer à l’analyse du mot de passe.

Et comme vous pouvez vous en douter, nous allons agir simplement sur la cellule qui correspond en lui donnant un nom :

Excel formation - Authentifier utilisateurs - 15

La première chose à faire maintenant, c’est de regarder si l’utilisateur saisi par l’utilisateur (et que nous avons inséré dans la cellule _utilisateur) existe réellement.

Pour cela, il suffit d’observer ce qui se passe lorsque cela n’est pas le cas.

Excel formation - Authentifier utilisateurs - 16

Comme vous pouvez le constater, étant donné que l’alimentation des données du tableau repose sur l’utilisation de la formule INDEX-EQUIV, lorsque le nom n’est pas reconnu dans la base, Excel nous retourne alors une série d’erreurs.

Il suffit alors d’intercepter ces erreurs pour identifier un utilisateur inconnu, en utilisant la fonction VBA IsError().

Celle-ci permet effectivement de renvoyez un résultat de type Booléen (c’est-à-dire ayant pour valeur VRAI ou FAUX, ou True et False en anglais) après avoir analysé l’argument passé entre parenthèses :

 

    If IsError([_passe]) Then
    End If

 

Lorsque l’utilisateur est inconnu, alors nous nous effectuons les opérations suivantes :

  • Nous revenons sur la feuille principale (dans le cas où le formulaire serait lancé depuis une autre feuille de calcul),
  • Puis nous modifions la valeur de la cellule _utilisateur pour que celle-ci identifie un utilisateur Invité
  • Et enfin nous affichons un message pour informer que la saisie est erronée

 

    If IsError([_passe]) Then
        PRINCIPALE.Activate
        [_utilisateur] = "Invité"
        MsgBox "Utilisateur inconnu !"
    End If

 

Vous noterez au passage que nous utilisons une petite astuce pour gagner un de temps dans la saisie de la feuille de l’activation de la feuille principale en appelant celle-ci directement dans son nom d’identification dans le projet

Excel formation - Authentifier utilisateurs - 17

Ainsi les deux options suivantes sont identiques :

        PRINCIPALE.Activate 
        Sheets("excelformation.fr").Activate

Et maintenant il ne reste plus qu’à vérifier la concordance (ou plutôt la non-concordance) du mot de passe saisi avec le mot de passe attendu (stocké dans la cellule _passe)

 

    If IsError([_passe]) Then
        PRINCIPALE.Activate
        [_utilisateur] = "Invité"
        MsgBox "Utilisateur inconnu !"
        
    ElseIf [_passe] <> TextBox_motPasse Then
    End If

 

Lorsque le mot de passe saisi est incorrect, nous réalisons les mêmes opérations, à la différence que le message affiché informe l’utilisateur sur la saisi du mauvais mot de passe.

Voici le code complet à lancer lorsque l’utilisateur clique sur le bouton valider

 

Private Sub CommandButton_valider_Click()
    If TextBox_utilisateur = "" Then Exit Sub
    
    [_utilisateur] = TextBox_utilisateur
    
    If IsError([_passe]) Then
        PRINCIPALE.Activate
        [_utilisateur] = "Invité"
        MsgBox "Utilisateur inconnu !"
        
    ElseIf [_passe] <> TextBox_motPasse Then
        PRINCIPALE.Activate
        [_utilisateur] = "Invité"
        MsgBox "Mot de passe incorrect !"
    End If
    
    Unload Me
    
End Sub

 

Comme vous pouvez le constater, nous finissons en fermant le formulaire avec l’instruction Unload Me.

 

3. Lancer le formulaire

Ensuite, il va nous rester à lancer le formulaire de connexion.

Pour cela, nous créons un nouveau bouton sur la feuille de calcul (Menu Insertion / Forme / Rectangle)

Excel formation - Authentifier utilisateurs - 18

Nous dessinons alors le rectangle à la bonne taille et nous effectuons un clic-droit sur celui-ci afin de choisir d’affecter une macro

Excel formation - Authentifier utilisateurs - 19

Nous donnons un nom à notre macro (ici par exemple la macro va porter le nom de connexion), puis nous appuyons sur le bouton Nouvelle.

De cette manière, Excel crée pour nous une nouvelle macro dans un nouveau module dédié, il ne nous reste plus qu’à lancer le formulaire depuis cette procédure grâce à la propriété Show

 

Sub connexion()
    connect.Show
End Sub

 

Nous faisons de même pour créer un bouton de deconnexion afin de rétablir l’utilisateur Invité (Création d’un bouton / Création d’une nouvelle procédure : deconnexion)

 

Sub deconnexion()
    [_utilisateur] = "Invité"
End Sub

 

4. Gérer les droits

À présent que nous sommes en mesure de nous connecter sur le classeur, nous allons pouvoir analyser les droits éventuels de chaque utilisateur sur les différentes feuilles du classeur.

Pour cela, nous allons créer un évènement qui va être instancié à chaque fois que nous allons changer de feuille de calcul :

  • Depuis l’explorateur de Projet, nous double-cliquons sur ThisWorkbook, afin d’entrer sur la feuille de code du classeur,
  • Puis nous sélectionnons les évènements de Workbook depuis le premier menu déroulant situé en haut de la feuille de code

Et enfin, nous choisissons l’évènement SheetActivate, cela a pour conséquence de créer la procédure : Workbook_SheetActivate(ByVal Sh As Object)

 

 

Excel formation - Authentifier utilisateurs - 20

Pour obtenir les droits qui correspond pour l’utilisateur en cours ET pour la feuille sélectionnée, nous allons passer en revue chacune de lignes contenues dans le tableau de synthèse, jusqu’à tomber sur la cellule ayant pour valeur le nom de la feuille en question :

Excel formation - Authentifier utilisateurs - 21

Pour cela, nous donnons un nom à la plage de cellules : _rubriquesAcces

Excel formation - Authentifier utilisateurs - 22

Et nous les passons en revue grâce à une boucle For Each (après avoir instancié une variable du type Range) :

 

Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    Dim c As Range   For Each c In [_rubriquesAcces]   Next
End Sub

 

La boucle For each permet d’énumérer tous les éléments contenus dans une collection.

Ici la plage de cellules _rubriquesAcces est en effet une collection contenant toutes les cellules qui en font partie).

Vous retrouverez toutes les informations concernant For Each en suivant le chapitre dédié de la formation VBA d’excelformation.fr.

Puis nous comparons la valeur de la cellule avec le nom de la feuille sélectionnée (obtenu à partir de la propriété Name de l’objet Sh envoyé par l’évènement SheetActivate)

 

        If c = Sh.Name Then
        End If

 

Et enfin, lorsque nous avons identifié la bonne cellule nous regardons si l’accès à la feuille est interdit en vérifiant la valeur de la cellule située juste à droite (nous effectuons ce décalage avec la fonction VBA Offset)

 

            If Not c.Offset(0, 1) = True Then
                PRINCIPALE.Activate
                MsgBox "Acces interdit !"
            End If

 

La méthode Range.Offset(ligne, colonne) permet de récupérer la cellule qui se trouve décalée du nombre de lignes et de colonnes données en arguments de la cellule Range.

Par exemple [B10].Offset(1, 2) permet d'agir sur la cellule [D11] (une cellule en dessous et deux cellules à droite de la cellule [B10])Lorsque la valeur de la cellule est différente de VRAI, alors nous redirigeons l’utilisateur sur la feuille PRINCIPALE et nous l’informons que l’accès lui est interdit.

Avant de pouvoir tester le système, il va nous rester à paramétrer l’affichage du formulaire au lancement de la feuille de calcul (en utilisant l’évenement WorkBook_Open)

Nous en profitons également pour définir que l’utilisateur par défaut doit être l’utilisateur Invité.

 

Private Sub Workbook_Open()
    [_utilisateur] = "Invité"
    connexion
End Sub

Et enfin, nous pouvons tester et nous rendre compte que l’accès aux feuilles non autorisée est rendu impossible !

 

Excel formation - Authentifier utilisateurs - 23

Évidemment, il est important de garder à l’esprit que ce système n’est pas infaillible, mais il propose déjà une bonne solution pour gérer les différents accès aux fichiers.

Nous pouvons même envisager coupler ce que nous venons de mettre en place avec le système de log que nous avons déjà découvert il y a quelques jours !

 

 

 



Articles qui pourraient vous intéresser

Comment envoyer la sélection par mail en 1 clic avec VBA sur Excel

Comment afficher plusieurs onglets d'un même classeur grâce au multi-fenêtrage d'Excel

Comment convertir des CSV en fichier Excel en masse (tous les fichiers d’un répertoire) avec VBA

6 Astuces pour envoyer facilement un fichier Excel par mail (sans VBA)

Commentaires

Il n'y a aucun commentaire...

Poster un commentaire

Pseudo
Commentaire

Contact - Plan du site - À propos - Contact

© Excel-Formation 2018 - Excel, simplement

Haut de la page

Excelformation.fr propose de nombreuses formations pratiques et gratuites sur Microsoft Excel : des cours pour apprendre à structurer et analyser les données, des tutos sur les fonctions avancées, les formules et les formules avancées d'Excel, les formules matricielles, les mise-en-formes conditionnelles, les graphiques Excel (xls, xlsx, xlsm,…). Des tutoriels pour apprendre à automatiser les tâches répétitives (via des macro-commandes en VBA) de vos classeurs Excel.