Lorsque vous créez une base de données, vous commencez généralement par créer plusieurs objets de base de données tels que des tables, des formulaires et des états. Puis arrive un moment où vous devez ajouter des éléments de programmation pour automatiser certains processus et relier vos objets de base de données. Cet article vous aidera à vous familiariser avec les outils de programmation d’Access.
Qu’est-ce que la programmation ?
Dans Access, la programmation est le processus d’ajout de fonctionnalités à votre base de données à l’aide de macros Access ou d’un code Visual Basic pour applications (VBA). Par exemple, supposons que vous ayez créé un formulaire et un État et que vous voulez ajouter un bouton de commande au formulaire qui, lorsque vous cliquez dessus, ouvre le rapport. Dans le cas présent, la programmation est le processus de création d’une macro ou d’une procédure VBA, puis la définition de la propriété événement OnClick du bouton de commande de manière à ce que vous cliquiez sur le bouton de commande pour exécuter la macro ou la procédure. Dans le cas d’une opération simple, telle que l’ouverture d’un rapport, vous pouvez utiliser l’Assistant bouton de commande pour exécuter tout le programme, ou vous pouvez désactiver l’Assistant et effectuer la programmation vous-même.
Remarque : De nombreux programmes Microsoft Office utilisent le terme «macro» pour faire référence au code VBA. Il peut être difficile d’accéder aux utilisateurs, car dans Access, le terme «macro» fait référence à une collection nommée d’actions de macro que vous pouvez assembler à l’aide du générateur de macro. Les actions de macro Access ne représentent qu’un sous-ensemble des commandes disponibles dans VBA. Le générateur de macro fournit une interface plus structurée que Visual Basic Editor, qui vous permet d’ajouter de la programmation aux contrôles et aux objets sans avoir à découvrir le code VBA. Vous devez vous souvenir qu’il s’agit de macros dans les articles d’aide Access. À l’inverse, le code VBA est appelé code VBA, code, fonction ou procédure. Le code VBA est inclus dans les modules de classe (qui font partie des formulaires individuels ou des rapports, et contiennent généralement du code pour ces objets) et dans les modules (qui ne sont pas liés à des objets spécifiques, et contiennent généralement du code «global» qui peut être utilisé dans l’ensemble de la base de données) .
Les objets (tels que les formulaires et les états) et les contrôles (tels que les boutons de commande et les zones de texte) possèdent différentes propriétés de type événement auxquelles vous pouvez joindre des macros ou procédures. Chaque propriété de type événement est associée à un événement spécifique, par exemple un clic sur la souris, l’ouverture d’un formulaire ou la modification des données incluses dans une zone de texte. Les événements peuvent également être déclenchés par des facteurs extérieurs à Access, tels que des événements système, ou par des macros ou procédures jointes à d’autres événements. Si vous ajoutez un grand nombre de macros ou procédures aux propriétés de type événement de nombreux objets, votre base de données peut devenir relativement complexe, mais en général, vous pouvez obtenir les résultats recherchés en limitant la programmation au strict minimum.
Dois-je utiliser des macros ou du code VBA ?
L’utilisation de macros, de code VBA, ou des deux, dépend principalement de la façon dont vous souhaitez déployer ou distribuer la base de données. Par exemple, si la base de données est stockée sur votre ordinateur et que vous en êtes l’unique utilisateur, et si vous avez l’habitude d’utiliser du code VBA, vous pouvez utiliser du code VBA pour réaliser la plupart de vos tâches de programmation. En revanche, si vous souhaitez partager votre base de données avec d’autres utilisateurs en la plaçant sur un serveur de fichiers, il est préférable de ne pas utiliser de code VBA pour des raisons de sécurité.
L’utilisation de macros ou de code VBA dépend de deux facteurs : la sécurité et les fonctionnalités que vous souhaitez utiliser. La sécurité est un véritable enjeu car du code VBA peut être utilisé pour créer un code susceptible de compromettre la sécurité de vos données ou d’endommager les fichiers présents sur votre ordinateur. Lorsque vous utilisez une base de données dont vous n’êtes pas l’auteur, vous ne devez activer le code VBA que si vous êtes certain que la base de données provient d’une source fiable. Lorsque vous créez une base de données destinée à être utilisée par d’autres personnes, évitez d’y inclure des outils de programmation qui obligeraient les utilisateurs à accorder spécifiquement l’état Approuvé à la base de données. Pour éviter d’en arriver là, reportez-vous aux techniques générales décrites plus loin dans cette section.
Pour garantir la sécurité de votre base de données, utilisez plutôt des macros et n’ayez recours à la programmation VBA que lorsque les actions de macro ne vous permettent pas d’obtenir les résultats souhaités. Par ailleurs, privilégiez les actions de macro dont l’exécution ne nécessite aucune approbation de la base de données. Grâce à cette utilisation restreinte des actions de macro, les utilisateurs seront certains que la base de données ne comporte aucun élément de programmation susceptible d’endommager les données ou autres fichiers présents sur leur ordinateur.
Considérations relatives aux macros
Depuis la version 2010, Access contient de nouvelles actions de macro qui vous permettent de créer des macros plus performantes qu’avec les versions antérieures. Par exemple, vous pouvez désormais créer et utiliser des variables globales temporaires à l’aide d’actions de macro, et les nouvelles actions de macro dédiées à la gestion des erreurs facilitent le traitement des erreurs. Dans les versions précédentes d’Access, seul le code VBA permet d’obtenir ce type de fonctionnalités. En outre, vous pouvez directement incorporer une macro dans la propriété de type événement d’un objet ou d’un contrôle. Une macro incorporée fait partie intégrante de l’objet ou du contrôle, et y reste jointe si celui-ci est déplacé ou copié.
Les macros permettent de traiter facilement de nombreuses tâches de programmation, comme l’ouverture et la fermeture de formulaires et l’exécution d’états. Vous pouvez rapidement et aisément relier les objets de base de données (formulaires, états, etc.) que vous avez créés car la syntaxe à retenir est limitée. Les arguments relatifs à chaque action sont affichés dans le Générateur de macro.
Outre la sécurité et la facilité d’utilisation offertes par les macros, vous devez les utiliser pour effectuer les tâches suivantes :
- Attribuer une action ou un ensemble d’actions à une clé. Pour cela, un groupe de macros nommé AutoKeys doit être créé.
- Effectuer une action ou une série d’actions lors de la première ouverture d’une base de données. Pour cela, une macro nommée AutoExec doit être créée.
Remarque : La macro AutoExec s’exécute avant les autres macros ou éléments de code VBA, même si vous avez créé un formulaire de démarrage dans la boîte de dialogue Options Access et joint une macro ou du code VBA à l’événement SurOuverture ou SurChargement de ce formulaire.
Pour plus d’informations sur la création de macros, voir la section plus bas Présentation des macros.
Considérations relatives à la programmation VBA
Utilisez la programmation VBA au lieu des macros si vous souhaitez effectuer l’une des opérations suivantes :
- Utiliser des fonctions intégrées ou créer vos propres fonctions Access comprend de nombreuses fonctions intégrées, comme la fonction INTPER qui calcule le paiement des intérêts. Vous pouvez utiliser ces fonctions intégrées pour effectuer des calculs sans avoir à créer d’expressions complexes. Le code VBA vous permet également de créer vos propres fonctions pour effectuer des calculs impossibles à réaliser avec une expression ou pour remplacer des expressions complexes. En outre, vous pouvez utiliser les fonctions que vous créez dans des expressions pour appliquer une opération commune à plusieurs objets.
- Créer ou manipuler des objets Généralement, le plus simple consiste à créer et modifier un objet en mode Création. Mais dans certains cas, l’utilisation de code est nécessaire pour manipuler la définition d’un objet. Le code VBA vous permet de manipuler tous les objets d’une base de données, en plus de la base de données proprement dite.
- Effectuer des actions au niveau système Vous pouvez insérer l’action ExécuterApplication dans une macro pour exécuter un autre programme (par exemple, Microsoft Excel) à partir d’Access, mais c’est à peu près tout ce qu’une macro vous permet de faire en dehors d’Access. Le code VBA vous permet de vérifier si un fichier se trouve sur l’ordinateur, d’avoir recours à l’automatisation ou à l’échange dynamique de données pour communiquer avec d’autres programmes Microsoft Windows (comme Excel) et d’appeler des fonctions incluses dans des bibliothèques de liens dynamiques Windows (DLL).
- Manipuler les enregistrements un par un Vous pouvez utiliser du code VBA pour parcourir un jeu d’enregistrements, un enregistrement à la fois, et effectuer une opération sur chaque enregistrement. Les macros, quant à elles, manipulent simultanément des jeux d’enregistrements entiers.
Utiliser l’Assistant Bouton de commande pour effectuer des tâches de programmation courantes
Si vous ajoutez un bouton de commande à un formulaire, l’Assistant Bouton de commande peut vous aider à débuter la programmation. L’Assistant vous permet de créer un bouton de commande qui effectue une tâche spécifique. Dans un fichier Access (.accdb), l’Assistant crée une macro incorporée à la propriété SurClic du bouton de commande. Dans un fichier .mdb ou .adp, l’Assistant crée du code VBA, car les macros incorporées ne sont pas disponibles dans ces formats de fichier. Dans les deux cas, vous pouvez ensuite modifier ou améliorer la macro ou le code VBA pour l’adapter à vos besoins.
- Dans le volet de navigation, cliquez avec le bouton droit sur le formulaire auquel vous souhaitez ajouter le bouton de commande, puis cliquez sur Mode Création.
- Dans l’onglet Création, cliquez sur la flèche Bas pour afficher la galerie Contrôles, puis vérifiez que Utiliser les Assistants Contrôle est sélectionné.
- Dans la galerie Contrôles de l’onglet Création, cliquez sur Bouton.
- Dans la grille de création du formulaire, cliquez sur l’emplacement où vous souhaitez placer le bouton de commande.L’Assistant Bouton de commande démarre.
- Sur la première page de l’Assistant, cliquez sur chacune des catégories de la liste Catégories pour afficher les actions que l’Assistant peut programmer pour le bouton de commande. Dans la liste Actions, sélectionnez l’action de votre choix, puis cliquez sur Suivant.
- Cliquez sur l’option Texte ou Image pour afficher respectivement du texte ou une image sur le bouton de commande.
- Si vous souhaitez afficher du texte, vous pouvez modifier le texte de la zone située en regard de l’option Texte.
- Si vous souhaitez afficher une image, l’Assistant suggère une image dans la liste. Pour sélectionner une autre image, cochez la case Afficher toutes les images afin d’afficher la liste de toutes les images de bouton de commande proposée par Access, ou cliquez sur Parcourir pour sélectionner une image stockée à un autre emplacement.Cliquez sur Suivant.
- Entrez un nom significatif pour le bouton de commande. Cette étape est facultative, et ce nom n’apparaît pas sur le bouton de commande. Toutefois, il est recommandé d’entrer un nom significatif car si vous avez ultérieurement besoin de faire référence au bouton de commande (par exemple, pour configurer l’ordre de tabulation des contrôles de votre formulaire), vous le retrouverez plus facilement parmi les différents boutons de commande. Si le bouton de commande ferme le formulaire, par exemple, vous pouvez le nommer cmdFermer ou CommandeFermer.
- Cliquez sur Terminer.Access place le bouton de commande sur le formulaire.
- Si vous souhaitez voir ce que l’Assistant a « programmé » pour vous, suivez les étapes facultatives ci-dessous :
- Si la feuille de propriétés n’est pas affichée, appuyez sur F4.
- Sur la feuille de propriétés, cliquez sur l’onglet Événement.
- Dans la zone de propriété sur clic , cliquez sur le bouton créer .Access démarre le Générateur de macro et affiche la macro créée par l’Assistant. Si vous le souhaitez, vous pouvez modifier la macro (pour plus d’informations sur la modification d’une macro, reportez-vous à la section plus loin Présentation des macros). Lorsque vous avez terminé, dans l’onglet Création, accédez au groupe Fermer et cliquez sur Fermer pour fermer le Générateur de macro. Si Access vous invite à enregistrer les modifications et à mettre à jour la propriété, cliquez sur Oui pour enregistrer les modifications ou sur Non pour les ignorer.
- Dans l’onglet Création, accédez au groupe Affichages, puis cliquez sur Affichage et sur Mode Formulaire. Cliquez sur le nouveau bouton de commande pour vérifier qu’il fonctionne comme prévu.
Présentation des macros
Une macro est un outil qui vous permet d’automatiser des tâches et d’ajouter des fonctionnalités à vos formulaires, états et contrôles. Par exemple, si vous ajoutez un bouton de commande à un formulaire, vous associez la propriété de type événement SurClic du bouton à une macro contenant les commandes à exécuter par le bouton chaque fois que l’utilisateur clique sur celui-ci.
Les macros Access peuvent être comparées à un langage de programmation simplifié avec lequel vous créez du code en générant une liste d’actions à effectuer. Lorsque vous créez une macro, vous sélectionnez les actions dans une liste déroulante, puis complétez les informations requises pour chacune d’entre elles. Les macros vous permettent d’ajouter des fonctionnalités à des formulaires, états et contrôles sans avoir à entrer du code dans un module VBA. Les macros fournissent un sous-ensemble des commandes disponibles dans VBA, et pour la plupart des utilisateurs, il est plus facile de créer une macro que de rédiger du code VBA.
Pour créer une macro, vous devez utiliser le Générateur de macro présenté dans l’illustration suivante.
Pour afficher le Générateur de macro :
- Dans l’onglet Créer, accédez au groupe Macros et code et cliquez sur Macro.
Présentation du code VBA
Comme les macros, le code VBA vous permet d’ajouter de l’automatisation et d’autres fonctionnalités à votre application Access. Vous pouvez élargir le code VBA en utilisant des contrôles tiers, et vous pouvez créer des fonctions et procédures adaptées à vos besoins.
Pour une prise en main rapide de la programmation VBA, commencez par créer une macro Access, puis convertissez-la en code VBA. Les instructions correspondantes sont disponibles à la section plus bas Convertir des macros en code VBA. Cette fonctionnalité crée un nouveau module VBA qui effectue les opérations équivalentes dans la macro. Elle ouvre également Visual Basic Editor pour vous permettre de commencer à modifier la procédure. Lorsque vous travaillez dans Visual Basic Editor, vous pouvez cliquez sur les mots clés et appuyer sur F1 pour démarrer l’Aide du développeur Access et en savoir plus sur chaque mot clé. Vous pouvez alors explorer l’Aide du développeur Access et découvrir de nouvelles commandes qui vous aideront à effectuer les tâches de programmation de votre choix.
Convertir des macros en code VBA
Vous pouvez utiliser Access pour convertir automatiquement des macros en modules VBA ou en modules de classe. Vous pouvez convertir les macros jointes à un formulaire ou à un état, qu’il s’agisse d’objets distincts ou de macros incorporées. Vous pouvez également convertir des macros globales non jointes à un formulaire ou état spécifique.
Remarque : Vous pouvez ajouter du code Visual Basic pour applications (VBA) à une base de données Web. Toutefois, vous ne pouvez pas exécuter ce code lorsque la base de données est en cours d’exécution dans un navigateur Web. Si votre base de données Web contient du code VBA, vous devez d’abord ouvrir la base de données sur le Web à l’aide d’Access pour pouvoir exécuter le code. Pour effectuer des tâches de programmation au sein d’une base de données Web, utilisez à la place des macros Access.
Convertir des macros jointes à un formulaire ou à un état
Ce processus convertit en code VBA toutes les macros qui sont référencées par (ou incorporées à) un formulaire ou état (ou l’un de ses contrôles), et ajoute le code VBA au module de classe du formulaire ou de l’état. Le module de classe devient partie intégrante du formulaire ou état et se déplace avec lui lorsqu’il est déplacé ou copié.
- Dans le volet de navigation, cliquez avec le bouton droit sur le formulaire ou sur l’état, puis cliquez sur Mode Création.
- Dans l’onglet Création, accédez au groupe Outils, puis cliquez sur Convertir les macros du formulaire en code Visual Basic ou Convertir les macros de l’état en code Visual Basic.
- Dans la boîte de dialogue Convertir les macros du formulaire ou Convertir les macros de l’état, indiquez si vous souhaitez qu’Access ajoute le code de gestion des erreurs aux fonctions qu’il génère. Par ailleurs, si vos macros contiennent des commentaires, indiquez si vous souhaitez qu’ils soient inclus sous forme de commentaires dans les fonctions. Cliquez sur Convertir pour continuer.S’il n’existe aucun module de classe pour le formulaire ou pour l’état, Access en crée un et ajoute une procédure au module pour chaque macro associée au formulaire ou à l’état. Access modifie également les propriétés de type événement du formulaire ou de l’état afin qu’elles exécutent les nouvelles procédures VBA à la place des macros.
- Pour afficher et modifier le code VBA :
- Lorsque le formulaire ou état est ouvert en mode Création, si la feuille de propriétés n’est pas encore affichée, appuyez sur F4.
- Dans l’onglet événement de la feuille de propriétés, cliquez dans une zone de propriété qui affiche [procédure événementielle], puis cliquez sur le bouton créer . Pour afficher les propriétés de type événement d’un contrôle spécifique, cliquez sur le contrôle pour le sélectionner. Pour afficher les propriétés de type événement de l’ensemble du formulaire ou état, sélectionnez Formulaire ou État dans la liste déroulante du haut de la feuille de propriétés.Access ouvre Visual Basic Editor et affiche la procédure événementielle dans son module de classe. Vous pouvez faire défiler la liste vers le haut ou vers le bas pour voir les autres procédures incluses dans le module de classe.
Convertir des macros globales
- Dans le volet de navigation, cliquez avec le bouton droit sur la macro que vous souhaitez convertir, puis cliquez sur Mode Création.
- Dans l’onglet Création, accédez au groupe Outils et cliquez sur Convertir les macros en Visual Basic.
- Dans la boîte de dialogue Convertir la macro, sélectionnez les options de votre choix, puis cliquez sur Convertir.Access convertit la macro et ouvre Visual Basic Editor.
- Pour afficher et modifier le code VBA :
- Dans Visual Basic Editor, si le volet Explorateur de projets n’est pas affiché, dans le menu Affichage, cliquez sur Explorateur de projets.
- Développez l’arborescence sous le nom de la base de données dans laquelle vous travaillez.
- Sous Modules, double-cliquez sur le module Macro convertie- nom de la macro.Visual Basic Editor ouvre le module.
Joindre une fonction VBA à une propriété de type événement
Lorsque vous convertissez une macro globale en code VBA, le code VBA est placé dans un module standard. Contrairement à un module de classe, un module standard ne fait pas partie d’un formulaire ou état. Vous pouvez associer la fonction à une propriété de type événement sur un formulaire, état ou contrôle afin que le code soit exécuté exactement quand et où vous le souhaitez. Pour ce faire, vous pouvez copier le code VBA dans un module de classe et l’associer à une propriété de type événement, ou vous pouvez passer un appel spécial de la propriété de type événement vers le module standard en utilisant la procédure suivante.
- Dans Visual Basic Editor, notez le nom de fonction. Par exemple, si vous avez converti une macro nommée MaMacro, le nom de la fonction sera MaMacro().
- Fermez Visual Basic Editor.
- Dans le volet de navigation, cliquez avec le bouton droit sur le formulaire ou état auquel vous souhaitez associer la fonction, puis cliquez sur Mode Création.
- Cliquez sur le contrôle ou la section auquel vous souhaitez associer la fonction.
- Si la feuille de propriétés n’est pas affichée, appuyez sur F4.
- Dans l’onglet Événement de la feuille de propriétés, cliquez sur la zone de la propriété de type événement à laquelle vous souhaitez associer la fonction.
- Dans la zone de propriété, tapez un signe égal(=), suivi du nom de la fonction, par exemple , =MyMacro(). Veillez à inclure les parenthèses.
- Enregistrez le formulaire ou l’état en cliquant sur Enregistrer sur la barre d’outils Accès rapide.
- Dans le volet de navigation, double-cliquez sur le formulaire ou sur l’état et testez-le pour vérifier que le code s’exécute comme prévu.
Vous connaissez maintenant les étapes de base pour ajouter du code VBA à votre base de données. Cet article décrit uniquement les notions de base relatives à la mise en route. Il existe de nombreux ouvrages de référence et ressources en ligne qui peuvent vous aider à développer vos compétences en matière de programmation.