Il est parfois utile de vérifier si un utilisateur du fichier connaît un mot de passe (voir par exemple comment protéger plusieurs feuilles Excel en même temps avec Visual Basic). On peut très bien pour celà utiliser la fonction InputBox, qui affiche une boîte de dialogue permettant à un utilisateur de saisir le mot de passe. Mais cette fonction ne permet pas de cacher le texte saisi par l'utilisateur (en le remplaçant par exemple par des astérisques).
Nous allons donc voir ici comment demander un mot de passe en remplaçant le texte entré par des caractères, pour le cacher des éventuels regards indiscrets...
Pour remplacer un texte par un caractère spécial, il faut définir la propriété PasswordChar. On vérifie dans l'aide de ce paramètre, et on clique sur « s'applique à »... on voit que ce paramètre n'est associé qu'à un composant TextBox. Inutile donc de chercher plus loin avec la fonction InputBox, ça ne sera pas possible. Or le composant TextBox est un simple champ de saisie, contrairement à InputBox qui affiche une boite de dialogue (avec des boutons OK et Annuler).
Pour utiliser ce composant TextBox, il va donc falloir créer une boite de dialogue en utilisant :
Créer la boîte de dialogue dans Visual Basic |
Commencez par créer la UserForm : menu Insertion / UserForm
Une fois la UserForm créée, cette boîte à outils s'affiche et vous permet de sélectionner des composants à ajouter à la fiche. Boutons, zones de texte, listes, cases à cocher... une palette de composants très utiles pour créer vos propres formulaires. Nous aurons besoin ici de deux boutons ( ) et d'une Zone de Texte ( ).
Placez d'abord ces trois composants sur la fiche, puis éditez les propriétés de chacun (clic droit / propriétés) pour définir les paramètres Caption des deux boutons (caption est le texte des boutons, donc Valider et Annuler) et le paramètre PasswordChar du TextBox à « * » (ou tout autre caractère qui devra remplacer le texte saisi). Vous pouvez éventuellement modifier la propriété Caption de la fiche et la redimentionner comme l'exemple ci-dessous.
Créer le code qui va gérer les actions de l'utilisateur |
Pour afficher la boite de dialogue vous devez associer ce code à un bouton dans Excel :
Sub Macro1() UserForm1.Show End Sub
Lorsque l'utilisateur clique sur le bouton Annuler, la boîte de dialogue doit être fermée. Il faut également penser à supprimer le texte que l'utilisateur aurait pu commencer à entrer. Faites un double clic sur ce bouton pour accéder au code directement.
Private Sub CommandButton1_Click() TextBox1 = "" UserForm1.hide End Sub
Lorsque l'utilisateur clique sur le bouton Valider, il faut vérifier que ce soit le bon mot de passe et effectuer la tâche le cas echéant. Ensuite, il faut bien sûr effacer le texte saisi (surtout s'il s'agit du bon mot de passe!) et fermer la boîte de dialogue. Faites un double clic sur ce bouton pour accéder au code directement.
Private Sub CommandButton2_Click() If TextBox1.Text = "mot-de-passe" Then 'Entrer ici le code à exécuter Else MsgBox("Le mot de passe est invalide.") End If TextBox1 = "" UserForm1.Hide End Sub