Comment convertir une image en noir et blanc sur Illustrator ?
Comment compacter une base de données Access en VBA.pdf
1. Votre Assistante : https://www.votreassistante.net - le 19/05/2022
Article écrit par Lydia Provin du site
Votre Assistante : https://www.votreassistante.net
1
Comment compacter une base de données Access en VBA ?
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 .
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 ou créez-en un qui ne servira qu’au compactage en allant dans
le menu Créer > Création de formulaire .
Dans le menu Conception de formulaires, dans les contrôles, cliquez sur le contrôle
Bouton 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.
2. Votre Assistante : https://www.votreassistante.net - le 19/05/2022
Article écrit par Lydia Provin du site
Votre Assistante : https://www.votreassistante.net
2
Dans la Feuille de propriétés (si elle n’apparaît pas, cliquez sur 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 :
É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 , 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
1
Puis, fermez la fenêtre VBA et passez en 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
3. Votre Assistante : https://www.votreassistante.net - le 12/04/2022
Article écrit par Lydia Provin du site
Votre Assistante : https://www.votreassistante.net
3
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 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 :
É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 , 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
1
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.
4. Votre Assistante : https://www.votreassistante.net - le 12/04/2022
Article écrit par Lydia Provin du site
Votre Assistante : https://www.votreassistante.net
4
À 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 . Donnez un nom à la base de données, choisissez l’emplacement et
cliquez sur Créer .
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 . Dans le menu Conception de
formulaires, cliquez sut le contrôle Bouton 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 :
5. Votre Assistante : https://www.votreassistante.net - le 12/04/2022
Article écrit par Lydia Provin du site
Votre Assistante : https://www.votreassistante.net
5
É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 , 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:UsersLydiaDesktopMa base de données test.accdb",
1
"C:UsersLydiaDesktopBDD temporaire.accdb"
2
Kill "C:UsersLydiaDesktopMa base de données test.accdb"
3
Name "C:UsersLydiaDesktopBDD temporaire.accdb" As "C:UsersLydiaDesktopMa base
4
de données test.accdb"
5
MsgBox "La base de données est compactée.", vbInformation, "Succès"
6
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é.
6. Votre Assistante : https://www.votreassistante.net - le 12/04/2022
Article écrit par Lydia Provin du site
Votre Assistante : https://www.votreassistante.net
6
Repassez en Mode Formulaire pour tester votre bouton. Si tout s’est bien passé, vous devriez
obtenir ce message :
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.
Tutoriel réalisé avec Access Microsoft 365
Voir la version vidéo de cet article