formateur informatique

Changer le mot de passe d'une base de données en VBA Access

Accueil  >  Bureautique  >  Access  >  Access VBA  >  Changer le mot de passe d'une base de données en VBA Access
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 :


Changer le mot de passe d'une base de données

Dans le volet précédent, nous avons appris à accéder aux objets d'une base de données externe, protégée par un mot de passe. Dans cette suite logique, nous allons voir comment, par le biais d'un formulaire, changer automatiquement le mot de passe d'une base de données externe, toujours par le code VBA.

Bases de données Access à télécharger
Pour démontrer cette technique, nous suggérons d'appuyer les travaux sur deux bases de données, dont l'une est protégée par un mot de passe. Comme vous pouvez le voir, la décompression livre deux fichiers nommés respectivement changer-mot-de-passe-bdd.accdb et facturation-et-stocks.accdb.
  • Double cliquer sur le second fichier pour l'ouvrir dans Access,
Mot de passe demandé avant ouverture de la base de données Access

Vous le constatez, une boîte de dialogue s'interpose. Elle interdit l'accès aux ressources tant que le bon mot de passe n'est pas formulé.
  • Dans la zone de saisie, taper le mot de passe : abc123,
  • Puis, valider par le bouton Ok,
Cette fois, la base de données s'ouvre effectivement.
  • Fermer cette base en cliquant sur la croix de la fenêtre,
  • Double cliquer sur le fichier changer-mot-de-passe-bdd.accdb pour l'ouvrir dans Access,
  • Cliquer sur le bouton Activer le contenu du bandeau de sécurité,
  • Dans le volet de navigation sur la gauche, double cliquer sur le formulaire fParcourir,
Vous remarquez que ce formulaire est tout d'abord doté d'un bouton matérialisé par l'icône d'un dossier. Son code VBA est prêt. Il ouvre une boîte de dialogue d'Office pour permettre à l'utilisateur de désigner un fichier de base de données. La zone de saisie sur sa droite est destinée à réceptionner le chemin d'accès complet à la base de données ainsi choisie.

Dans les deux zones de texte du dessous, l'utilisateur doit renseigner respectivement l'ancien mot de passe de cette base de données pour pouvoir y accéder en mode exclusif par le code VBA et le nouveau pour pouvoir le modifier, toujours par le code VBA. Elles sont respectivement nommées ancienMP et nouveauMP. Naturellement, le bouton intitulé Changer, doit lancer le processus VBA permettant de réaliser ce changement, en tenant compte de toutes les informations fournies en amont.

L'objet de base de données
Pour parvenir à modifier le mot de passe d'accès à une base de données externe, nous devons premièrement prendre possession de cette dernière par le code VBA. Pour cela, nous avons besoin de déclarer un objet de base de données.
  • A gauche du ruban Accueil, cliquer sur la flèche du bouton Affichage,
  • Dans les propositions, choisir le mode Création,
  • Sur le formulaire en conception, cliquer sur le bouton Changer,
  • Activer alors l'onglet Evénement de sa feuille de propriétés,
  • Puis, cliquer sur le petit bouton associé à son événement Au Clic,
Nous basculons ainsi dans l'éditeur VBA Access entre les bornes de la procédure événementielle changerMP_Click. Son code se déclenchera au clic sur ce bouton.

Juste en-dessous, vous notez la présence de la procédure attachée au bouton matérialisé par l'icône d'un dossier. C'est elle qui permet à l'utilisateur de désigner une base de données par le biais d'une boîte de dialogue et de mémoriser son chemin d'accès dans la zone de saisie nommée chemin.
  • Dans les bornes de la procédure changerMP_Click, ajouter la déclaration suivante :
...
Dim base As Database
...


Vérifier le chemin d'accès
Nous initialiserons bientôt cet objet sur la base de données pointée par l'utilisateur. Mais avant cela, nous devons nous assurer que l'utilisateur a bien choisi un fichier donc que lazone de texte nommée chemin, n'est pas vide.
  • A la suite du code de la procédure, créer l'instruction conditionnelle suivante :
...
If chemin.Value <> "" Then

Else
MsgBox "Vous devez désigner une base de données protégée."
End If
...


Si une base de données est bien choisie (chemin.Value <> ""), nous poursuivons le traitement qu'il nous reste à implémenter. Le cas échéant (Else), nous en alertons l'utilisateur (MsgBox) et avortons le traitement.

Chaîne de connexion avec mot de passe
Maintenant et nous l'avons appris à l'occasion du volet précédent, pour accéder à la base de données protégée, nous devons fournir la chaîne de connexion à la fonction VBA Access OpenDatabase pour initialiser l'objet base que nous avons déclaré.
  • Dans la première branche de l'instruction conditionnelle, ajouter la ligne VBA suivante :
...
Set base = OpenDatabase(chemin.Value, True, False, ";PWD=" & ancienMP.Value)
...


Nous initialisons (Set) notre objet base sur la base de données en cours. Pour cela, nous passons son chemin d'accès (chemin.Value) en premier paramètre de la fonction OpenDatabase. Nous y accédons en mode exclusif (True) et pas en lecture seule (False), donc en écriture. En dernier argument enfin, nous lui passons le mot de passe indiqué par l'utilisateur dans la zone de texte ancienMP. Sans lui, la connexion échouerait.

Changer le mot de passe
Grâce à l'initialisation de l'objet base, celui-ci a hérité de propriétés et méthodes pour piloter la base de données désignée. L'une d'entre elles est une méthode qui se nomme NewPassword. Comme son nom l'indique, elle permet d'attribuer un nouveau mot de passe à la base de données.
  • A la suite du code de l'instruction conditionnelle, ajouter la ligne VBA suivante :
...
base.NewPassword ancienMP.Value, nouveauMP.Value
...


En premier paramètre de cette méthode, nous passons l'ancien mot de passe à remplacer par le nouveau que nous renseignons en second argument.

Décharger la base de données
Pour finir proprement comme nous en avons l'habitude, il ne nous reste plus qu'à décharger l'objet de base de données pour libérer la mémoire de l'ordinateur.
  • A la suite, dans l'instruction conditionnelle, ajouter les lignes VBA suivantes :
...
MsgBox "Le mot de passe de la base externe a été changé avec succès."
base.Close
Set base = Nothing
...


Comme vous le savez, c'est la réinitialisation (Set) à Nothing qui permet de détruire l'objet désigné.
  • Enregistrer les modifications (CTRL + S) puis basculer sur le formulaire (ALT + Tab),
  • L'exécuter ensuite par exemple avec la touche F5 du clavier,
  • Cliquer sur le bouton à l'icône du dossier,
  • Dans la boîte de dialogue, pointer sur le dossier de décompression,
  • Double cliquer alors sur la base de données facturation-et-stocks.accdb,
Ainsi, nous sommes de retour sur le formulaire et le chemin d'accès à cette base est effectivement inscrit dans la zone de texte du haut.
  • Dans la première zone de texte du dessous, renseigner l'actuel mot de passe : abc123,
  • Dans celle de droite, taper le nouveau mot de passe comme par exemple : 999zzz,
  • Cliquer enfin sur le bouton Changer,
Changer le mot de passe pour accéder à une base de données Access en VBA

Comme vous le constatez, le message de succès apparaît aussitôt. Mais nous entendons le vérifier.
  • Valider la boîte de dialogue en cliquant sur le bouton Ok,
  • Dans le dossier de décompression, double cliquer sur le fichier facturation-et-stocks.accdb,
  • A l'invite, taper l'ancien mot de passe : abc123,
Comme vous le remarquez, il ne semble en effet plus en vigueur indiquant que notre code VBA Access a vraisemblablement fonctionné.

Le mot de passe de la base de données Access a été modifié en VBA

Maintenant, si vous tapez le nouveau mot de passe (999zzz) dans cette même zone, vous avez le plaisir de constater que l'accès est autorisé et donc, que le mot de passe de la base de données externe a été modifié avec succès grâce au code VBA Access.

 
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