Inscription à la newsletter

Tutoriel réalisé avec Access Microsoft 365

Comme nous l’avions vu dans un des tout premiers tutoriels sur Votre Assistante, compacter une base de données Access permet de réduire le poids du fichier, mais aussi, parfois, de le réparer. Dans ce tutoriel, nous allons voir comment compacter une base de données Access en VBA (Visual Basic for Applications, le langage de programmation de Microsoft), ce qui nous permettra de lancer le compactage sur simple clic d’un bouton : idéal pour les utilisateurs pour lesquels vous ne souhaitez pas donner l’accès au ruban notamment.

Suivez bien ce tutoriel jusqu’à la fin pour découvrir le tout nouvel outil Access que je viens de créer et profiter de son tarif de lancement 😊.

 

Comment compacter une base de données Access manuellement ?

Pour rappel, pour compacter manuellement une base de données Access, il vous suffit de vous rendre dans le menu Outils de base de données et de cliquer sur Compacter et réparer une base de données Compacter et réparer une base de données.

 

Comment compacter une base de données Access en VBA à la fermeture du fichier ?

Création du bouton pour compacter la base de données

Pour compacter la base de données Access actuellement ouverte en utilisant du code VBA, nous allons créer un bouton sur un formulaire. Pour cela, ouvrez un formulaire existant en Mode Création Mode Création Access ou créez-en un qui ne servira qu’au compactage en allant dans le menu Créer > Création de formulaire Création de formulaire.

Dans le menu Conception de formulaires, dans les contrôles, cliquez sur le contrôle Bouton Bouton Access avant de faire un clic sur le formulaire. Si les Assistants Contrôle sont activés sur votre logiciel, vous devriez avoir l’assistant qui s’ouvre. Comme nous allons faire appel à du code, nous n’en avons pas besoin, vous pouvez le fermer en cliquant sur Annuler.

Dans la Feuille de propriétés Feuille de propriétés (si elle n’apparaît pas, cliquez sur Feuille de propriétés Feuille de propriétés dans le menu Conception de formulaires), en gardant sélectionné le bouton, écrivez le texte que vous souhaitez voir apparaître dessus, à la ligne Légende de l’onglet Format et, dans l’onglet Autres, à la ligne Nom, donnez-lui un nom : Compacter par exemple. Vous pouvez aussi lui donner l’apparence de votre choix via le groupe Contrôler la mise en forme du menu Format :

Bouton Compacter

 

Écriture de la procédure pour compacter la base de données

Toujours en gardant sélectionné le bouton, à l’onglet Évènement de la Feuille de propriétés Feuille de propriétés, cliquez sur les 3 points à la fin de la ligne Au clic et sélectionnez le Générateur de code : une procédure nommée Compacter_Click apparaît dans la fenêtre VBA.

Saisissez à l’intérieur :

Application.SetOption "Auto compact", True

Puis, fermez la fenêtre VBA et passez en Mode Formulaire Mode Formulaire par un clic droit sur l’onglet du formulaire. Cliquez sur le bouton que nous venons de créer : pour l’instant, rien ne se passe, c’est normal. En effet, le comptage ne peut se faire que lorsque la base de données est fermée. C’est d’ailleurs ce qui se produit lorsque vous utilisez la commande classique de compactage, car Access ferme et rouvre la base de données, mais, comme il le fait très rapidement, cela ne se voit quasiment pas à moins d’avoir une base de données très lourde.

Le code que nous venons d’écrire permet en fait d’activer l’option qui se trouve dans les options d’Access via le menu Fichier > Options > Base de données active > Compacter lors de la fermeture. Avec cette procédure, un seul clic sur le bouton suffira pour toute la durée de vie de la base de données puisque l’option sera toujours active après le clic sur le bouton du formulaire. Cependant, il n’y aurait pas trop d’intérêt à créer un bouton pour une seule utilisation. Nous allons donc créer un autre bouton qui permettra de désactiver cette option toujours par un seul clic. Il est parfois préférable de ne pas cocher cette case en permanence lorsque vous utilisez une base de données assez conséquente, car le compactage se produira à chaque fermeture, ce qui peut être chronophage pour une utilisation quotidienne.

 

Création du bouton pour ne plus compacter la base de données

Repassez en Mode Création Mode Création Word par un clic droit sur l’onglet du formulaire. Créez un autre bouton comme précédemment pour le bouton Compacter en lui donnant le Nom Compacter_non et la Légende Ne plus compacter par exemple. Pour aller plus vite, sélectionnez le précédent bouton, faites un Ctrl + C, Ctrl + V et modifiez simplement la Légende et le Nom dans la Feuille de propriétés Feuille de propriétés :

Bouton Ne plus compacter

 

Écriture de la procédure pour ne plus compacter la base de données

Toujours en gardant sélectionné le bouton, à l’onglet Évènement de la Feuille de propriétés Feuille de propriétés, cliquez sur les 3 points à la fin de la ligne Au clic et sélectionnez le Générateur de code : une procédure nommée Compacter_non_Click apparaît dans la fenêtre VBA.

Saisissez, cette fois-ci, à l’intérieur :

Application.SetOption "Auto compact", False

Désormais, un clic sur Compacter activera l’option de compactage à la fermeture de la base de données et un clic sur Ne plus compacter la désactivera.

À la suite des 2 lignes de code, vous pouvez ajouter une MsgBox comme nous allons le voir dans la deuxième partie de ce tutoriel afin de prévenir l’utilisateur que l’action a bien été effectuée.

 

Comment compacter une base de données Access à partir d’une autre base de données ?

Comme vous avez pu le voir avec la méthode précédente, la base de données Access ne se compacte que lorsqu’elle est fermée et lorsque l’utilisateur choisit d’activer ou non le compactage en cliquant sur le bouton adéquat.

Par simplicité, il peut être préférable de lancer le compactage à partir d’une autre base de données lorsque cela est nécessaire.

 

Création de la base de données Access, de son formulaire et de son bouton

Créez une nouvelle base de données vide en cliquant sur Fichier > Nouveau > Base de données vide Base de données vide. Donnez un nom à la base de données, choisissez l’emplacement et cliquez sur Créer Créer une base de données Access.

Fermez la table qui est ouverte en cliquant sur la croix de l’onglet, puis créez un formulaire via le menu Créer > Création de formulaire Création de formulaire. Dans le menu Conception de formulaires, cliquez sut le contrôle Bouton Bouton Access et cliquez sur le formulaire. Une nouvelle fois, si les Assistants Contrôles sont activés, l’assistant s’ouvre, fermez-le en cliquant sur le bouton Annuler. Paramétrez le bouton de la même manière que le tout premier bouton créé dans la base de données précédente :

Bouton Compacter

 

Écriture de la procédure pour compacter une autre base de données Access

Toujours en gardant sélectionné le bouton, à l’onglet Évènement de la Feuille de propriétés Feuille de propriétés, cliquez sur les 3 points à la fin de la ligne Au clic et sélectionnez le Générateur de code : une procédure nommée Compacter_Click apparaît dans la fenêtre VBA.

Saisissez à l’intérieur :

DBEngine.CompactDatabase "C:\Users\Lydia\Desktop\Ma base de données test.accdb", "C:\Users\Lydia\Desktop\BDD temporaire.accdb"
Kill "C:\Users\Lydia\Desktop\Ma base de données test.accdb"
Name "C:\Users\Lydia\Desktop\BDD temporaire.accdb" As "C:\Users\Lydia\Desktop\Ma base de données test.accdb"
MsgBox "La base de données est compactée.", vbInformation, "Succès"

La première et deuxième ligne permettent de créer une copie de la base de données et de la compacter. J’ai donc saisi le chemin complet de la base de données à compacter, puis le même chemin, mais pour une base de données nommée BDD temporaire que vous pouvez remplacer par un autre nom. Pour ne pas faire d’erreur dans le chemin, je vous conseille de faire un clic droit sur le fichier en maintenant la touche Maj enfoncée > Copier en tant que chemin d’accès.

À la ligne 3, la base de données précédente est supprimée via l’instruction Kill.

À la ligne 5, je renomme la base de données nommée BDD temporaire par le nom qu’elle avait au départ : Ma base de données test.

Enfin, à la ligne 6, un message m’alerte que le compactage est terminé.

Repassez en Mode Formulaire pour tester votre bouton. Si tout s’est bien passé, vous devriez obtenir ce message :

MsgBox de base de données compactée

Si un message d’erreur apparaît, assurez-vous, en premier lieu, que les chemins sont corrects.

 

Présentation du nouvel utilitaire Access de Votre Assistante

Si vous ne souhaitez pas faire appel à du code VBA pour compacter votre base de données, mais quand même le faire à partir d’un bouton sur un formulaire, découvrez le tout nouvel utilitaire Access que je viens de créer. Grâce à lui, vous pourrez compacter votre base de données, mais aussi exporter les tables au format Excel, les vider, utiliser votre base de données en réseau très facilement, lui appliquer un mot de passe et afficher le nombre d’objets qu’elle contient. Vous pourrez l’utiliser avec une base de données contenant ou non un mot de passe, mais aussi une base de données déjà en réseau. Profitez de son tarif de lancement sur cette page.

Découvrez ma formation complète pour créer votre propre application Access adaptée à vos besoins quotidiens pour vous faire gagner en productivité.
Inscription à la newsletter