Experts en bases de données Access et développement VBA.

Développé par Microsoft, Access est inclus dans la suite bureautique MS Office Pro, ce qui en fait le système de gestion de base de données relationnelle (SGBDR) le plus « populaire » du marché. Il a pour objectif de mettre en place et de piloter aisément toutes les informations collectées et conservées dans une base de données (ou « database ») relationnelle.

Qu'est-ce qu'une base de données relationnelle  ?

Pour bien comprendre le rôle de MS Access et l'importance d'avoir recours à ses services, il est essentiel de maîtriser la notion de base de données. Cette dernière renferme toutes les informations nécessaires au fonctionnement d'une entreprise et de son site web (fiches clients, produits, stocks, commandes, etc.).

Au démarrage d'une activité, vous conservez le plus souvent ces informations dans un tableur Excel ou un document Word, soit dans une feuille de calcul ou un fichier texte.

Dans les deux cas, plus vos listes s'allongent, plus elles deviennent ingérables. Des doublons, des incohérences apparaissent au fil du temps et tronquent les résultats des recherches. De plus, ces dernières restent limitées, comme les possibilités d'extraction des données.

Sans compter le poids du fichier et les risques de mauvaises manipulations qui aboutissent parfois à la disparition complète de celui-ci…

La migration vers une base de données relationnelle s'impose alors. C'est le modèle le plus courant. Très normée, son architecture reste compréhensible, quel que soit l'utilisateur (une notion importante en cas de changement d'équipe par exemple). Au sein de cette base, les données sont organisées en tableaux appelés tables et sont indexées par catégorie pour être plus facilement retrouvées. Par exemple, une base de données relationnelle pourrait contenir des tables comme : clients, fournisseurs, commandes, produits, prix, etc.

L'idée est de transformer les informations collectées en une multitude d'objets reliés entre eux. Un article, par exemple, peut posséder plusieurs caractéristiques (couleur, taille, disponibilité) et un client avoir passé plusieurs commandes. Les premiers sont donc en relation avec les seconds et vice-versa.

Les liens (ou relations) possibles entre les données sont regroupés en trois types, illustrés par des exemples :

  • Relation un à un : un client a un seul numéro dédié et celui-ci ne correspond qu'à lui.
  • Relation un à plusieurs : un client est relié à plusieurs commandes, mais chacune d'entre elles n'est attribuée qu'à lui seul.
  • Relation plusieurs à plusieurs : un produit peut avoir plusieurs couleurs et plusieurs produits peuvent avoir la même teinte.

Chaque table inclut une colonne, appelée champ, qui contient une clé primaire. Nombre ou texte, elle est spécifique et permet d'identifier chaque ligne, baptisée enregistrement, de manière unique.

La base de donnée utilise les champs de clés primaires pour associer rapidement les données de plusieurs tables. Pour relier la table «  Clients  » à celle des «  Produits  », la clé primaire de la première (colonne «  Réf client  », par exemple) est ajoutée à la seconde. Elle prend alors le nom de clé étrangère dans cette dernière. MS Access retrouve ainsi, par la clé primaire de la table «  Produits  », tous les articles achetés par un client précis.

Ce modèle relationnel, appelé aussi système OLTP (OnLine Transaction Processing), est particulièrement adapté aux applications transactionnelles comme dans un site d'e-commerce (table clients, factures, acomptes, produits, etc.) reliées par des clés primaires et étrangères. Autre avantage des bases de données relationelles : elles sont extensibles et modulables.

Le rôle de Microsoft Access

Gérer soi-même une bases de données relationelle est source d'erreurs et limite les applications. Pour optimiser l'utilisation de vos données, il est donc recommandé d'utiliser par un SGBDR en général, comme MS Access. Celui-ci permet un pilotage très fin des informations collectées.

Avec Access, vous pouvez relativement rapidement et simplement :

  • mettre en place des formulaires de saisie, des états ou rapports imprimables, avec regroupement d'informations selon divers critères, totalisations, etc.
  • obtenir des statistiques, des graphiques éloquents, etc.
  • partager des données avec des tiers via des messageries électroniques, sur le web, etc.

À ces fonctions s'ajoutent : ajout de nouvelles données, modifications des existantes, suppression des informations obsolètes, etc.

La capacité de données gérées par MS Access est limitée à 2 Gb, ce qui signifie qu'il n'est pas conçu pour d'énormes volumes comme peuvent en avoir Amazon ou Facebook. Ceux-là iront vers des systèmes comme Oracle ou SQL Server. Plus puissants, mais également beaucoup plus onéreux et techniquement moins accessibles. C'est la raison pour laquelle MS Access, qui se situe entre Excel et ces mastodontes, séduit un large public, des PME/PMI aux associations.

Dernier point important, si votre base de données est utilisée par plusieurs membres de votre entreprise, le logiciel — et donc la licence Access qui va avec — doit être installé sur chaque poste de travail concerné. Si certains collaborateurs n'ont pas pour vocation de créer ou de modifier la structure des objets, un RunTime, librement téléchargeable sur le site de Microsoft, version allégée d'Access, permet d'utiliser la base de données (ouvrir les tables, faire des requêtes, créer des formulaires et des états). En théorie, 255 collaborateurs peuvent utiliser MS Access simultanément. En pratique, à partir de 20, un ralentissement important du trafic, voire un bug de la base de données, est souvent observé.

À noter : les bases de données relationnelles générées par Access possèdent une extension «  . accdb  » («  . mbd  » pour les versions antérieures à 2007).

Le fonctionnement de Microsoft Access

Microsoft, en intégrant Access à sa suite Pro, a voulu en faire un logiciel orienté utilisateur, facilement maîtrisé par ses clients, même s'ils ne sont pas informaticiens. De ce fait, son maniement est assez simple et son assistant performant.

Une base de données Access est composée de 6 composants :

1. Les tables Access

Comparable à une feuille de calcul, une table stocke les données dans lignes et des colonnes afin d'éviter les redondances. Les lignes sont appelées enregistrements. Elles sont constituées d'une ou de plusieurs colonnes baptisées champs. Par exemple, un enregistrement nommé «  Produit  » va contenir le nom d'un article et les champs vont indiquer les informations afférentes (couleur, prix, volume, etc.), regroupées par typologie (texte, date ou heure, nombre, etc.) Les données relatives aux employés et aux établissements vont être stockées de la même manière, dans deux autres tables. C'est ce qu'on appelle le processus de normalisation. Les tables sont donc le pilier d'Access, l'endroit où sont stockées toutes les données.

2. Les formulaires Access

Ce sont des interfaces graphiques, fournies par Access, et conçues pour permettre à des utilisateurs, mêmes novices en la matière, d'entrer et de modifier, de manière fiable, des données dans la base de données. MS Access vous offre l'opportunité de personnaliser facilement ces portes d'entrée en n'affichant par exemple que quelques champs et en limitant le nombre d'opérations possibles sur le programme.

3. Les requêtes Access

Vous allez les utiliser constamment dans votre base de données pour trier, filtrer et faire des calculs. Une requête peut contenir plusieurs filtres. Par exemple : tous les clients, nés avant 1980, qui dépensent plus de 500 euros chez vous chaque année et qui habitent à Paris en les hiérarchisant par mois de naissance. Vous pourrez également, si les montants ont été renseignés chaque année, calculer automatiquement combien chacun d'entre eux a dépensé en 10 ans dans votre entreprise. On distingue deux types de requêtes :

  • les sélections qui permettent de récupérer des données pour les utiliser telles quelles, pour un formulaire ou un état
  • les actions qui donnent la possibilité d'agir sur les données pour créer des tables, ajouter des informations à celles qui existent, les mettre à jour ou les supprimer.

4. Les états ou rapports Access

Access permet de présenter les données de plusieurs manières et de les imprimer impeccablement. Par exemple, vous pouvez pour une liste d'articles avoir plusieurs présentations :

  • Liste des articles avec stocks disponibles
  • Liste des articles sur quatre colonnes  
  • Liste des articles les plus vendus l'année dernière…

Les déclinaisons possibles sont infinies. Ces états peuvent être imprimés, exportés, partagés ou envoyés par messagerie électronique.

5. Les macros Access

Dans Access, les macros permettent d'automatiser des tâches et d'ajouter des fonctionnalités à des formulaires ou à des états. Pour les créer, vous choisissez les actions désirées dans un menu déroulant et vous les complétez par les informations requises. Par exemple, vous pouvez créer une macro contenant des commandes pour ouvrir un état «  Liste des produits disponibles en bleu  ». Puis l'associer à l'événement (nom donné à la fonction permettant d'exécuter une ou plusieurs instructions en réponse à l'action d'un utilisateur) SurClic du bouton d'un questionnaire. À chaque clic sur celui-ci, l'état désiré s'affichera automatiquement.

L'avantage est de ne pas utiliser de code, car il est directement intégré dans les macros.

6. Les modules Access

Comme les macros, les modules permettent d'ajouter des actions à votre base de données, mais de manière plus complexe, car directement écrit en code Visual Basic for Applications (VBA), un langage de programmation spécifique. Ce qui explique qu'un grand nombre d'utilisateurs d'Access ne maîtrise pas ces derniers. Chaque module est constitué d'un ensemble d'instructions et de procédures stockées sous forme d'unité. Il en existe deux sortes :

  • Classes, pour des procédures particulières liées à un formulaire ou à un état ;
  • Standards pour des processus plus généraux, non associés à un objet spécifique, qui vont s'appliquer à toute la base de données.

Les compatibilités de Microsoft Access

Access et les publipostages Word et Outlook

Une des raisons pour lesquelles Access est si utilisé, et apprécié, par les entreprises tient au fait que ses données sont facilement exploitables dans des publipostages Word. Vous pouvez créer dynamiquement et modifier des documents en automatisant les fonctionnalités de Word depuis Access, ou encore interagir avec des fonctionnalités d'Outlook comme l'envoi de messages ou la gestion d'un carnet d'adresses partagées.

Liaison Access avec Excel

Excel étant une des applications les plus utilisées au monde, Access ne pouvait pas l'ignorer  ! Il est donc possible d'importer des feuilles de calcul, de manière ponctuelle ou définitive, d'Excel vers une table Access et de les modifier. Des informations saisies sous Excel peuvent ainsi alimenter une base Access. Inversement, il est possible de transférer les informations de la base de données vers Excel.

Pourquoi utiliser les deux  ? Parce qu'ils sont complémentaires. Une feuille de calcul Excel est limitée à 65'536 lignes, alors qu'il n'y a pas de limites sur Access. Mais le tableur permet de réaliser plus aisément des calculs complexes, des graphiques et de jongler avec les tableaux dans tous les sens. Sur Access, les données peuvent se présenter sous beaucoup de formes, contrairement à son rival qui ne peut générer que des colonnes et des lignes. La prise en main et la popularité d'Excel sont ses atouts, mais le SGBDR gère des masses de données beaucoup plus importantes.

Access et SQL

Plus les volumes de données sont importants, plus le temps de réponse aux requêtes analytiques augmente. La puissance des bases de données multidimensionnelles comme SQL s'avère alors intéressante. La simplicité d'utilisation d'Access et sa compatibilité partielle avec celles-ci permet d'assister l'utilisateur, via une interface graphique, pour la génération et l'utilisation de requêtes SQL.

La programmation Access

Une fois que vous avez créé les éléments de base de données (tables, formulaires et états), vous ajoutez donc des fonctionnalités à l'aide des macros Access et de modules développés en langage Visual Basic pour Applications (VBA). Ce processus, appelé programmation Access, répond à quelques spécificités dont voici les principales.

1 - Générer les macros Access

Pour créer une macro Access, vous devez utiliser le Générateur de macro, un ensemble de lignes et de colonnes dans lesquelles vous définissez les actions et les conditions d'application voulues. Les macros permettent de :

  • traiter de nombreuses tâches de programmation (ouvrir et fermer des formulaires, exécuter des états, relier les objets de la base de données, etc.)
  • effectuer une ou plusieurs actions lors de la première ouverture de la base de données Access avec la création de l'événement «  AutoExec  » qui s'exécute avant les autres macros ou éléments de code VBA
  • attribuer une ou plusieurs actions à une clé avec la création d'un ensemble de macros nommé «  AutoKeys  »,
  • gérer et corriger des erreurs. Les actions de macro comme «  SurErreur  » (comparable à l'instruction «  On Error  » dans VBA) et «  EffacerMacroErreur  » permettent d'intervenir lorsque des erreurs se produisent durant l'exécution de votre macro. Et avec «  PasAPas  », vous pouvez entrer dans votre macro afin d'observer la façon dont elle opère action après action.
  • Créer et utiliser des variables temporaires. «  DéfinirVarTemp  », «  SupprimerVarTemp  », et «  SupprimerToutesVarTemp  » permettent d'insérer des variables temporaires dans vos macros. Vous pouvez les utiliser sous forme de conditions pour contrôler l'exécution de macros, échanger des données avec des états ou des formulaires, ou à toute autre fin nécessitant un emplacement de stockage temporaire pour une valeur. Ces variables temporaires étant également accessibles dans le code VBA, vous pouvez les utiliser pour échanger des données avec des modules Access.

2 - Utiliser modules Access et le code VBA

Le point principal de différentiation entre macros Access et code VBA est la sécurité. Le dernier, si vous partagez votre base de données avec d'autres utilisateurs, est en effet toujours susceptible d'être tronqué par des personnes malveillantes. Pour cette raison, la programmation VBA est introduite quand les actions de macros ne peuvent répondre aux attentes. Et parmi ces dernières, celles dont l'exécution ne nécessite pas l'approbation de la base de données sont à privilégier. Ainsi vous serez sûrs qu'aucun élément de programmation ne vient endommager votre base de données ni votre ordinateur.

Quand il est nécessaire, le code VBA, appelé également fonction ou procédure, est inclus dans les modules, de classe ou standard. Il va être utilisé à la place des macros pour les opérations suivantes :

  • Création de vos propres fonctions. Access renferme de nombreuses fonctions intégrées, comme INTPER pour calculer le paiement des intérêts. Mais avec le code VBA, vous allez pouvoir définir vos propres fonctions, pour effectuer par exemple des calculs irréalisables avec les fonctions existantes. Vous pourrez également utiliser les fonctions créées dans des expressions pour appliquer une opération commune à plusieurs objets.
  • Créer ou manipuler des objets. Dans certains cas, l'utilisation de VBA est nécessaire pour manipuler la définition d'un objet.
  • Effectuer des actions dans le système. En dehors, d'Access, les macros ne peuvent pas faire grand-chose, à part exécuter un autre programme (ExécuterApplication) comme Excel. Le code VBA permet d'aller plus loin, de vérifier si un fichier est présent sur votre ordinateur, d'avoir recours à l'échange dynamique de données pour communiquer avec d'autres programmes Windows et d'appeler des fonctions incluses dans des bibliothèques de liens dynamiques de ces derniers (DLL).
  • Manipuler les enregistrements un par un. Les macros vous permettent de manipuler simultanément des ensembles d'enregistrements. Avec le code VBA, vous pouvez parcourir un enregistrement à la fois, et effectuer une opération sur chaque enregistrement.

Attention toutefois à ne pas trop surcharger la base de données avec des macros ou du code VBA pour ne pas la rendre trop complexe à l'usage.

Enfin sachez que les bases de données Access sont exploitables par des languages comme Visual Basic, Java, Delphi, C++, etc.