Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :
Protéger l'accès au code VBA
Pour des raisons multiples comme de confidentialité et de sécurité industrielle, il devient tôt ou tard indispensable de
protéger l'accès au coeur des ressources d'une application déployée.
Dans notre cas volontairement simplifié, nous
protégeons l'accès à un formulaire administrateur de modification des données par un
mot de passe . Mais un problème se pose. Celui-ci est conditionné par une
procédure événementielle et il est inscrit en clair dans le
code VBA . Il devient donc impératif de
protéger l'accès à ce code VBA .
Base de données source
Pour appuyer les démonstrations de cette nouvelle
astuce Access , nous proposons de récupérer une
base de données offrant ce
formulaire protégé par un
code VBA .
Télécharger le fichier compressé protection-code.rar en cliquant sur ce lien ,
Le décompresser dans le dossier de votre choix,
Double cliquer sur la base de données résultante pour l'ouvrir dans Access ,
Puis, 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 F_suppr_client ,
Ainsi nous l'exécutons et vous constatez que la route est effectivement barrée par la demande d'un
mot de passe .
Taper n'importe quel mot de passe et valider par le bouton Ok,
Comme vous pouvez le voir, si le
mot de passe n'est pas correct, après avoir cliqué sur le bouton Ok, le
code VBA ordonne la fermeture immédiate du
formulaire . L'accès est donc protégé même si les caractères tapés ne sont pas encodés. Mais nous avions appris Ã
crypter un mot de passe grâce aux
masques de saisie dans les
tables Access . Dès lors, un petit
formulaire intermédiaire s'interposant avant l'ouverture du
formulaire final ferait l'affaire. Quoiqu'il en soit, ici le
mot de passe est vérifié en clair dans le
code VBA et nous allons le constater.
Dans le volet de navigation , cliquer droit sur le formulaire F_suppr_client ,
Dans le menu contextuel, choisir de l'ouvrir en mode Création ,
Nous accédons donc à la vue en conception du
formulaire . Et à ce titre, nous avions appris Ã
verrouiller une application Access pour interdire l'accès à ce type de ressource. Mais ici, l'accès est autorisé et le
formulaire est sélectionné par défaut.
Activer l'onglet Evénement de la feuille de propriétés ,
Cette dernière est généralement placée sur la droite de l'écran. Si vous ne la visualisez pas, vous devez cliquer sur le
bouton Feuille de propriétés dans le
ruban Création .
Vous notez la présence d'une
procédure événementielle associée à l'
événement Sur chargement du
formulaire . C'est elle qui ordonne l'
exécution du code VBA dont la vocation est de vérifier le
mot de passe saisi par l'utilisateur.
Cliquer sur la ligne de cet événement Sur chargement pour l'activer,
Dès lors, cliquer sur le petit bouton qui se propose à l'extrémité droite de la zone,
Nous basculons ainsi dans l'
éditeur de code Visual Basic Access entre les bornes de la
procédure événementielle Form_Load . Son
code se déclenche à chaque chargement (Load) du
formulaire . Comme vous pouvez le voir, le
mot de passe requis apparaît effectivement en clair :
Private Sub Form_Load()
If (InputBox("Veuillez saisir le mot de passe d'ouverture", "Identification requise") <> "abc123 ") Then
DoCmd.Close acForm, "F_suppr_client"
End If
End Sub
Verrouiller l'accès au VBA
Nous devons donc créer un mot de passe supplémentaire offrant l'autorisation d'accéder aux
ressources VBA . Mais cette fois, nous allons bénéficier d'une fonctionnalité existante.
En haut de l'éditeur VBA Access , cliquer sur le menu Outils ,
Dans la liste des propositions, cliquer sur Propriétés de clients-et-commandes ,
Dans la boîte de dialogue qui suit, activer l'onglet Protection ,
Dès lors, cocher la case Verrouiller le projet pour l'affichage ,
Dans la zone Mot de passe , taper un mot de passe simple comme : test33 ,
Dans la zone Confirmer le mot de passe , le taper de nouveau à l'identique,
Puis, cliquer sur le bouton Ok pour la mise en place de la protection,
Dès lors, enregistrer les modifications avec le raccourci clavier CTRL + S ,
Il est temps de constater que la propriété intellectuelle est désormais protégée.
Fermer l'éditeur VBA Access en cliquant sur la croix de sa fenêtre,
De retour sur le formulaire , l'enregistrer à son tour (CTRL + S),
Puis, le fermer en cliquant sur la croix de son onglet,
Dès lors, réaliser le raccourci clavier ALT + F11 ,
De fait, nous nous retrouvons de nouveau propulsés dans l'
éditeur de code VBA Access . Et le moins que l'on puisse dire est que la
protection de l'oeuvre n'est pas flagrante. L'
accès au code VBA est autorisé sans la moindre barrière à franchir. Tout cela s'explique néanmoins naturellement. La modification que nous avons entreprise est structurelle. Pour l'entériner, nous devons fermer le projet puis le rouvrir.
Fermer l'éditeur VBA puis fermer Access ,
A la racine du dossier de décompression, double cliquer sur la base de données pour la rouvrir,
Réaliser de nouveau le raccourci clavier Alt + F11 ,
Nous sommes bien de retour dans l'
éditeur VBA . Mais cette fois, aucun code ne saute aux yeux.
Dans l'explorateur de projets sur la gauche, cliquer sur le symbole + ,
Cette action doit avoir pour effet de déployer l'arborescence afin d'accéder aux ressources VBA de ce projet. Mais comme vous pouvez le voir, il n'en est rien désormais. Une boîte de dialogue s'interpose. Tant que vous n'entrez pas le bon mot de passe, la vue reste figée.
En revanche, si vous entrez la bonne information, l'accès est instantanément déverrouillé. Il convient alors de déployer l'arborescence du dossier
Microsoft Access Objets de classe . Dès lors, l'
objet du formulaire apparaît. Un double clic sur ce dernier affiche son code au centre de l'écran. Le
mot de passe d'accès au formulaire est de nouveau visible. L'administrateur peut reprendre son développement pour le faire évoluer. Il n'aura pas besoin de protéger de nouveau le projet. Le
mot de passe est désormais scellé mais néanmoins mémorisé pour la session en cours.
L'issue aurait été la même en passant par le
formulaire en conception et en cliquant sur le petit bouton de son
événement Sur chargement . L'accès au code VBA est désormais sécurisé.