Code Monkey home page Code Monkey logo

excel-motdepasse's Introduction

Excel - MOTDEPASSE()

Fonction personnalisée Excel permettant de générer des mots de passe contenant des lettres et, en option, chiffres et symboles.

Présentation

Pour les utilisateurs connectés que nous sommes, un générateur de mots de passe est devenu une nécessité. Sur un MacOS, Safari intègre cette fonctionnalité via le trousseau iCloud. Les autres utilisateurs pourront se tourner vers des générateurs en ligne ou des logiciels dédiés (gestionnaire de mots de passe notamment).

Aujourd'hui nous allons voir comment créer en quelques lignes de code seulement, un générateur de mots de passe sous Microsoft Excel. Ce générateur prend la forme d'une fonction personnalisée que j'ai sobrement intitulée MOTDEPASSE().

Son utilisation est très simple :

  • tous les arguments sont facultatifs, ainsi =MOTDEPASSE() génère un mot de passe de 10 caractères (longueur par défaut) composé uniquement de lettres (majuscules et minuscules) ;
  • =MOTDEPASSE(14;2;1) permet de créer un mot de passe contenant 14 caractères, dont 2 chiffres et 1 symbole ;
  • Le nombre maximal de chiffres et de symboles est modifiable dans le code source via les constantes maxChiffres et maxSymboles.

Sous Excel, ouvrez Visual Basic Editor (ALT+F11 sur PC et Mac) et insérez un nouveau module à partir de l'explorateur de projets. Dans l'éditeur, copiez/collez les lignes ci-après, enregistrez le module puis fermez l'éditeur. De retour dans Excel, la nouvelle fonction est immédiatement disponible.

La fonction peut bien entendu être améliorée en offrant, par exemple, la possibilité d'éviter les caractères ambigus et/ou d'interdire les répétitions de caractères.

' Déclaration des variables obligatoire '
Option Explicit

' ------------------------------------------------------------------------------------------------------------------------------- '
' Fonction personnalisée Excel permettant de générer des mots de passe contenant des lettres et, en option, chiffres et symboles. '
' Tous les arguments sont facultatifs. Par défaut, la longueur du mot de passe est de 10 caractères. '
' =MOTDEPASSE(14;2;1) permet de créer un mot de passe contenant 14 caractères, dont 2 chiffres et 1 symbole. '
' '
' Auteur : enderlinp
' ------------------------------------------------------------------------------------------------------------------------------- '
Function MOTDEPASSE(Optional Longueur As Long = 10, Optional Nbre_chiffres As Integer = 0, Optional Nbre_symboles As Integer = 0) As String

' Déclaration des constantes '
' On limite à 10 le nombre maximal de chiffres et de symboles '
Const maxChiffres = 10
Const maxSymboles = 10

' Déclaration des variables '
Dim i, j, n, debut, fin As Long
Dim strLettres, strChiffres, strSymboles, strChaine, strMot As String
Dim varTab, varTemp As Variant

' Chaînes de caractères contentant lettres, chiffres et symboles '
strLettres = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
strChiffres = "0123456789"
strSymboles = "@#&§%$£€(){}[]\`~_<>=+-*/!?;.:"
strChaine = strLettres & strChiffres & strSymboles

' On limite le nombre total de chiffres '
If Nbre_chiffres > maxChiffres Then
    Nbre_chiffres = maxChiffres
' On limite le nombre total de chiffres à la longueur du mot de passe '
ElseIf Nbre_chiffres > Longueur Then
    Nbre_chiffres = Longueur
End If

If (Nbre_symboles + Nbre_chiffres) > Longueur Then
    Nbre_symboles = Longueur - Nbre_chiffres
' On limite le nombre total de symboles '
ElseIf Nbre_symboles > maxSymboles Then
    Nbre_symboles = maxSymboles
' On limite le nombre total de symboles à la longueur du mot de passe '
ElseIf Nbre_symboles > Longueur Then
    Nbre_symboles = Longueur
End If

' On redéfinit la taille du tableau en fonction de la longueur du mot de passe '
ReDim varTab(Longueur)

' Si l’argument Nbre_chiffres est renseigné '
If Nbre_chiffres > 0 Then
    ' On détermine les positions de début et de fin de la chaîne '
    debut = CLng(Len(strLettres) + 1)
    fin = CLng(debut + Len(strChiffres) - 1)
    ' Boucle permettant de stocker les chiffres dans un tableau '
    For i = 1 To Nbre_chiffres
        varTab(i) = Mid(strChaine, (Rnd() * (fin - debut) + debut), 1)
    Next i
End If

' Si l’argument Nbre_symboles est renseigné '
If Nbre_symboles > 0 Then
    ' On détermine les positions de début et de fin de chaîne '
    debut = CLng(Len(strLettres + strChiffres) + 1)
    fin = CLng(debut + Len(strSymboles) - 1)
    ' Boucle permettant de stocker les symboles dans un tableau '
    For i = 1 To Nbre_symboles
        varTab(CLng(i + Nbre_chiffres)) = Mid(strChaine, (Rnd() * (fin - debut) + debut), 1)
    Next i
End If

' Si la longueur du mot de passe est supérieure au nombre de chiffres et symboles '
If (Longueur > (Nbre_symboles + Nbre_chiffres)) Then
    ' Boucle permettant de stocker les lettres dans un tableau '
    For i = 1 To (Longueur - (Nbre_symboles + Nbre_chiffres))
        varTab(CLng(i + Nbre_chiffres + Nbre_symboles)) = Mid(strChaine, (Rnd() * (Len(strLettres) - 1) + 1), 1)
    Next i
End If

' Tri aléatoire du tableau contenant lettres, chiffres et symboles '
Randomize
For n = LBound(varTab) To UBound(varTab)
    j = CLng(((UBound(varTab) - n) * Rnd) + n)
    If n <> j Then
        varTemp = varTab(n)
        varTab(n) = varTab(j)
        varTab(j) = varTemp
    End If
Next n

' Reconstitution du mot de passe après tri aléatoire '
For i = LBound(varTab) To UBound(varTab)
    strMot = strMot & varTab(i)
Next i

' On renvoie le mot de passe '
MOTDEPASSE = strMot

End Function

excel-motdepasse's People

Contributors

enderlinp avatar

Stargazers

 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.