Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
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,
 

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,
 

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

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.