formateur informatique

Protéger les développements VBA Access

Accueil  >  Bureautique  >  Access  >  Access Astuces  >  Protéger les développements 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 :


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.

Ouverture du formulaire Access protégée par un mot de passe

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.

Code VBA au chargement du formulaire Access

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,
Mot de passe pour protéger le code VBA Access

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.

Mot de passe crypté pour accéder au code dans éditeur VBA Access

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

 
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