Comment créer un générateur de mots de passe sécurisés et personnalisés sur Excel ?

Guide « 108 astuces pour grands débutants sur Excel ! » Offert
Booster votre productivité en téléchargeant gratuitement votre ebook PDF des meilleures astuces pour les débutants et les pros d'Excel
Excel formation - 00 Astuces - 100
 

Dans ce tutoriel, je vais vous montrer comment créer une fonction personnalisée permettant de générer très facilement un mot de passe aléatoire. Nous y verrons également comment inclure des paramètres dans cette fonction afin de pouvoir la rendre la plus personnalisable possible.

 

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. Présentation

Comme nous venons de le voir dans l’introduction de ce tutoriel, voyons comment construire un générateur de mots de passe aléatoire sur Excel.

Pour personnaliser au maximum la génération de ces mots de passe, nous retrouvons tout d’abord un tableau qui reprend les paramètres à appliquer :

Excel formation - Générateur de mot de passe - 01

Nous devrons donc rendre la construction de ce mot de passe flexible, en permettant de choisir :

  • La taille totale du mot de passe exprimée en nombre de caractères,
  • Si celui-ci doit être composé de lettres minuscules,
  • Si celui-ci doit être composé de lettres majuscules,
  • Si celui-ci doit être composé de chiffres,
  • Et enfin, si celui-ci doit être composé de caractères spéciaux

Bien entendu, Excel ne propose pas directement de fonctions pour effectuer cette opération, nous allons devoir la créer entièrement, en VBA.

 

2. Création de la fonction

Pour créer une fonction personnalisée, nous allons devoir utiliser le langage de programmation VBA.

Ici, le code que nous allons mettre en place n’utilise pas de commandes particulièrement complexes, mais pour que ce tutoriel reste accessible à tous, nous reviendrons dans le détail sur chaque ligne de code.

Si à la suite de ce tutoriel, vous souhaitez en savoir plus sur ce langage de programmation, vous pouvez commander mon livre « Apprendre le VBA » en suivant ce lien.

La première chose à faire pour développer une macro ou une fonction en VBA est de lancer Visual Basic Editor, en appuyant sur les touches [Alt]+[F11].

Il s’agit de l’application incluse avec les logiciels de la suite Office dédiée au développement de macro-commandes.

Celui-ci va alors se lancer directement sur le projet actif, et nous allons commencer par insérer un module, qui est une feuille de code dans laquelle nous venons saisir les instructions dans le langage VBA.

Puis, nous allons pouvoir créer notre fonction, en commençant par saisir le mot-clé Function, suivi du nom que nous souhaitons lui donner, par exemple « MotDePasse » :

Excel formation - Générateur de mot de passe - 02

Puis nous validons en appuyant sur la touche [Entrée] du clavier.

Pour faire fonctionner cette fonction, nous allons lui affecter des arguments, c’est-à-dire que nous allons demander à l’utilisateur de fournir des informations sur la manière dont le mot de passe doit être généré.

Pour cela, nous saisissons le nom de ces arguments entre les parenthèses ajoutées par VBE.

Ces arguments sont au nombre de cinq (taille, minuscule, majuscule, chiffre et special) :

Function MotDePasse(taille As Integer, minuscule  As Boolean, majuscule As Boolean, chiffre As Boolean,  caracteresSpeciaux As Boolean)   
End Function

Le premier de ces arguments est un nombre entier, nous le typons en tant que Integer.

Quant aux autres arguments, ces derniers vont permettre de préciser si l’utilisateur souhaite obtenir les caractères correspondants dans le rendu final. Nous les typons donc en tant que Boolean, c’est-à-dire que ces derniers ne pourront avoir pour valeur que VRAI ou FAUX (True ou False en langage VBA).

 

3. Sélection des chaînes de caractères

Il faut savoir qu’il existe plusieurs méthodes pour tirer des caractères aléatoirement en fonction de critères définis.

Ici, nous aborderons la solution la plus simple à mettre en place.

Celle-ci consiste simplement à instancier de nouvelles variables typées en tant que chaîne de caractères, qui permettront de récupérer les caractères correspondants :

    Dim listeMinuscule As String, listeMajuscule  As String, listeChiffres As String, listeCaracteresSpeciaux As String,  listeComplete As String
    listeMinuscule = "azertyuiopqsdfghjklmwxcvbn"
    listeMajuscule = "AZERTYUIOPQSDFGHJKLMWXCVBN"
    listeChiffres = "0123456789"
    listeCaracteresSpeciaux =  "&~#{([-|_\^@$%*µ,?;.:/!§"

Nous y retrouvons donc quatre listes de caractères stockées dans des chaînes différentes.

Maintenant, nous allons pouvoir effectuer une série de tests sur les valeurs des arguments, afin de créer une grande chaîne unique contenant tous les caractères à inclure dans le tirage :

    If minuscule Then listeComplete = listeComplete  & listeMinuscule
    If majuscule Then listeComplete = listeComplete  & listeMajuscule
    If chiffre Then listeComplete = listeComplete &  listeChiffres
    If caracteresSpeciaux Then listeComplete = listeComplete  & listeCaracteresSpeciaux

Pour cela, nous effectuons un test avec l’instruction If… Then que nous avions découverte dans un tutoriel précédent, et qui permet d’effectuer une action uniquement lorsqu’une condition est remplie, un peu comme la fonction Excel SI().

Nous commençons donc par regarder si l’utilisateur souhaite inclure les lettres minuscules dans le mot de passe, puis si cela est le cas, nous ajoutons la chaîne listeMinucule à la suite de la variable listeComplete (qui pour le moment est vide), en utilisant l’esperluette de concaténation (le signe « & »).

Ensuite, nous répétons cette opération pour toutes les catégories de caractères.

Nous nous retrouvons ainsi avec une chaîne de caractères composée de tous les éléments pouvant être inclus dans le mot de passe.

 

4. Tirer un caractère aléatoirement

Maintenant que nous disposons d’une variable contenant tous les caractères pouvant se trouver dans le mot de passe, nous allons devoir sélectionner l’un de ces caractères de manière aléatoire.

Pour cela, nous allons créer une nouvelle variable que nous appelons chaine, laquelle est typée en tant que chaîne (String).

Dans celle-ci, nous venons stocker un caractère aléatoire de la chaîne listeComplete.

Pour cela, nous utilisons deux fonctions :

  • Tout d’abord, la fonction Mid() permet d’extraire un ou plusieurs caractères parmi une chaîne
  • Puis la fonction Rnd() permet d’effectuer un tirage aléatoire d’un nombre décimal compris entre 0 et 1. Nous multiplions ce nombre par le nombre de lettre contenues dans la chaîne listeComplete, que nous pouvons récupérer avec la fonction Len(). Ensuite, pour éviter tout problème, nous demandons à VBA de ne conserver que la partie entière de ce nombre en encapsulant ce calcul dans la fonction Int() et pour finir, nous ajoutons 1 (pour ne pas tirer la lettre située en zéro-ième position, qui n’existe pas).

 

    Dim chaine As String
    chaine = Mid(listeComplete, Int(Rnd()  * Len(listeComplete)) + 1, 1)

Cette instruction nous permet de tirer un seul caractère au sein de la chaîne listeComplete.

Pour répéter cette opération le nombre de fois demandé par l’utilisateur avec l’argument taille, nous allons insérer cette ligne dans une boucle For… Next.

Comme nous l’avons vu dans le détail dans le cours qui lui est dédié, une chaîne For… Next permet de répéter une opération tant qu’une condition est remplie.

Pour utiliser la boucle, nous commençons par déclarer une variable i à la suite de la déclaration de la variable chaine que nous typons en tant que Integer, c’est-à-dire que nombre entier :

    Dim chaine As String, i As Integer 

Ensuite, nous insérons la ligne que nous venons de détailler dans une instruction For… Next dans laquelle la variable i aura pour valeur de départ 1, puis va s’incrément jusqu’à atteindre la valeur de taille :

    For i = 1 To taille
        chaine = chaine & Mid(listeComplete,  Int(Rnd() * Len(listeComplete)) + 1, 1)
    Next

Pour que cela fonctionne, nous ajoutons ce résultat à la suite de la chaine « chaine ».

Il ne reste maintenant plus qu’à retourner la valeur de chaine en tant que résultat de la fonction MotDePasse :

    MotDePasse = chaine

 

5. Quelques petites améliorations à apporter

Ici la macro est terminée, mais nous pouvons encore l’améliorer en ajoutant deux instructions.

Tout d’abord, au tout début de la fonction, nous ajoutons la ligne suivante :

    Application.Volatile

Comme son nom l’indique, celle-ci permet de rendre la fonction dynamique, c’est-à-dire que le résultat sera recalculé lors de chaque recalcul effectué sur la feuille de calcul (ou en appuyant sur la touche [F9] du clavier depuis la feuille).

Ensuite, juste avant la boucle For… Next, nous ajoutons l’instruction suivante :

    Randomize

Sans rentrer dans les détails, cette instruction Randomize permet de faire en sorte que la fonction Rnd() que nous avons vue un peu tôt retourne une valeur totalement aléatoire, ce qui n’était pas vraiment le cas jusqu’alors.

 

6. Générer des mots de passe aléatoires

Maintenant que la fonction est belle et bien terminée, nous allons pouvoir l’appeler directement depuis la feuille de calcul.

Pour cela, nous procédons exactement comme nous le ferions pour n’importe quelle autre fonction Excel, en saisissant un signe d’égalité (« = »), puis en tapant les premières lettres de la fonction :

Excel formation - Générateur de mot de passe - 03

La seule difficulté à laquelle nous allons être confrontés, c’est que contrairement aux fonctions natives d’Excel, ici nous ne disposons d’aucune aide à la saisie en direct :

Excel formation - Générateur de mot de passe - 04

Soit nous connaissons exactement les arguments attendus, soit nous pouvons cliquer sur le bouton fx pour lancer l’assistant à la création de formules une fois la fonction sélectionnée :

Excel formation - Générateur de mot de passe - 05

Il ne reste alors plus qu’à renseigner les différents arguments attendus, en appuyant à chaque fois sur la touche [F4] pour utiliser des références absolues (avec les signes dollars), ce qui nous permettra ensuite de pouvoir étendre la formule sur toutes les cellules :

Excel formation - Générateur de mot de passe - 06

De cette manière, Excel nous tire ici un mot de passe composé de 48 caractères.

Nous pouvons modifier les paramètres, afin par exemple mettre en place un mot de passe composé de 6 chiffres uniquement :

Excel formation - Générateur de mot de passe - 07

Maintenant, nous pouvons étendre la formule sur toutes les cellules de la colonne en utilisant la poignée de recopie :

Excel formation - Générateur de mot de passe - 08



Articles qui pourraient vous intéresser

L’erreur cachée qui plombe vos tableaux Excel (et comment l’éviter)
Comment entourer automatiquement cellules non conformes Excel sans MF conditionnelle ni formule ?
Comment créer un tableau de bord commercial intelligent avec Excel ?
Comment créer un graphique dessiné à la main avec Excel ?
Comment créer un graphique de distribution en 5 minutes chrono ?
L’astuce Excel pour imprimer le tableau que vous voulez en un clic !
Comment gérer ses comptes sur Excel avec le « Suivi du budget familial »
Comment créer facilement des QR codes sans VBA avec Excel ?
Transformez vos données en graphique tornade interactif facilement sur Excel !
Comment créer un graphique Iceberg dans Excel ?
Comment créer un graphique dynamique en quelques minutes sur Excel sans VBA ni TCD ?
Comment créer des feux de signalisation tricolores dynamiques dans Excel sans VBA ?

Contact - Plan du site - À propos - Contact

© Excelformation.fr 2018-2024 - 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.