Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Ouvrir une base de données protégée
Nous avons déjà appris à accéder aux
objets d'une base de données externe en
VBA Access. Avec cette nouvelle astuce, nous allons apprendre à atteindre ces mêmes objets, y compris quand la
BDD est
protégée par un mot de passe.
Base de données Access à télécharger
Pour développer cette solution, nous suggérons d'appuyer l'étude sur des travaux précédents ayant notamment démontré comment
parcourir les tables d'une
base de données externe non protégée.
Cette décompression livre
deux bases de données respectivement nommées
facturation-et-stocks.accdb et
ouvrir-base-de-donnees-mot-de-passe.accdb. La première est protégée par un mot de passe. La seconde est celle qui doit y accéder en faisant sauter le verrou.
- Double cliquer sur le second fichier 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,
- Sur le formulaire, cliquer sur le bouton Ouvrir,
- Dans la boîte de dialogue, pointer sur le dossier de décompression,
- Puis, double cliquer sur le premier des deux fichiers de bases de données,
Comme vous pouvez le voir, puisque cette seconde base est protégée, malgré le code VBA existant, issu de travaux précédents, l'ouverture échoue.
Le code VBA existant
Un code VBA est déjà présent et il permet d'atteindre les objets d'une base externe. Nous proposons de le consulter.
- Cliquer sur le bouton Fin de la boîte de dialogue,
- 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 Ouvrir pour le sélectionner,
- Dès lors, activer l'onglet Evénement de sa feuille de propriétés,
- Puis, cliquer sur le petit bouton associé à son événement Au clic,
De cette manière, nous basculons dans l'
éditeur VBA Access entre les bornes de la
procédure événementielle ouvrir_Click. Elle est effectivement déjà implémentée.
Nous proposons à l'utilisateur une boîte de dialogue lui permettant de choisir un fichier, plus précisément une base de données :
...
Set boiteD = Application.FileDialog(msoFileDialogOpen)
boiteD.Filters.Add "Bases Access", "*.mdb;*.accdb", 1
...
Puis, nous prenons possession de cette base de données :
Set base = OpenDatabase(chemin)
Avant de parcourir ses tables :
For Each table In base.TableDefs
If Left(table.Name, 4) <> "MSys" And Left(table.Name, 1) <> "~" Then
listeTables.AddItem table.Name
End If
Next table
C'est le mode d'ouverture (OpenDatabase) que nous devons adapter pour accéder aux objets d'une base de données sécurisée par un mot de passe.
Accéder à une base de données sécurisée
Celle issue du dossier de téléchargement est protégée par le mot de passe abc123. C'est cette
chaîne de connexion que nous devons adapter pour fournir au VBA le mot de passe d'accès à la volée.
- Dans le code VBA, adapter la chaîne de connexion comme suit :
...
Set base = OpenDatabase(chemin, True, False, ";PWD=abc123")
...
En deuxième paramètre, nous passons le
booléen True pour une ouverture en mémoire certes, mais en
mode exclusif, soit le mode qui accorde toutes les autorisations, ici en l'occurrence au code
VBA Access. Nous réglons le troisième paramètre (ReadOnly soit lecture seule) à false, pour accéder à cette base en
écriture puisqu'il est question d'y inscrire le
mot de passe. Ensuite, nous accédons au paramètre de connexion auquel nous fournissons le
mot de passe d'accès (;PWD=abc123).
Il est temps de tester le code VBA. Pour cela, il s'agit tout d'abord d'enregistrer les modifications (CTRL + S), de basculer sur le formulaire (ALT + Tab) et de l'exécuter (F5).
- Dès lors, cliquer sur le bouton Ouvrir,
- Ensuite, désigner la seconde base téléchargée (facturation-et-stocks.accdb),
- Puis, valider en cliquant sur le bouton Ouvrir de la boîte de dialogue,
Cette fois, plus aucun message d'erreur n'est à déplorer. Cela signifie que nous sommes parvenus à atteindre les ressources d'une base de données externe, protégée par un mot de passe.
Pour preuve, grâce au code VBA déjà en place, ce sont bien les noms des tables de cette base externe qui sont restitués dans la zone de texte du formulaire.