Inscription à la newsletter

Tutoriel réalisé avec Access Microsoft 365

Dans une base de données Access, vous pouvez avoir besoin de cocher/décocher des cases qui se trouvent dans plusieurs enregistrements dans un formulaire affiché en mode Formulaires continus. Cela peut vous servir à effectuer une mise à jour ou suppression en masse, voire à exporter plusieurs factures en PDF via une boucle en langage VBA : tout dépend de la procédure événementielle que vous créez (en cliquant sur un bouton par exemple) et qui prendra en compte les cases cochées ou non. Dans ce tutoriel, nous allons voir comment cocher et décocher des cases en un seul clic dans un formulaire Access :

Comment cocher et décocher des cases à cocher en un clic dans un formulaire sur Access ? (GIF)

 

Présentation de la base de données utilisée

Pour ce tutoriel, je vais partir d’une base de données simple comportant une table T_Clients avec des informations classiques (prénom, nom, adresse, etc.) et son formulaire avec un affichage en Formulaires continus afin que les enregistrements se retrouvent les uns en dessous des autres. La particularité est que j’ai rajouté un champ de type Oui/Non nommé Selection dans la table T_Clients et dans son formulaire, car même si je n’ai besoin de cette information que pour la sélection/désélection des cases à cocher, il faut bien que l’information soit stockée quelque part.

 

Ajout de boutons pour cocher/décocher les cases à cocher dans le formulaire

Pour cocher ou décocher les cases en un seul clic, je vais me servir de boutons. Pour cela, en Mode Création Mode Création Access du formulaire F_Clients, dans le menu Conception de formulaires, je clique sur Bouton Bouton Access et fait un clic dans l’en-tête de mon formulaire. Si vous avez la commande Utiliser les Assistants Contrôle activée, l’assistant s’ouvre. Ici, nous n’en avons pas besoin, fermez-le en cliquant sur Annuler.

Dans le menu Format, je lui applique le Style rapide Effet intense – Or, 4 accentué Effet intense – Or, 4 accentué et, dans la Feuille de propriétés Feuille de propriétés (si elle n’est pas affichée, cliquez sur Feuille de propriétés Feuille de propriétés dans le menu Conception de formulaires), à la ligne Légende de l’onglet Format, j’écris Cocher et je fais de même aux lignes Nom et Texte d’info-bulle de l’onglet Autres. De retour dans l’onglet Format de la Feuille de propriétés Feuille de propriétés, je clique sur les 3 points au bout de la ligne Image et je choisis l’icône Marque Image Marque avant de cliquer sur OK.

Tout en gardant sélectionné mon bouton, je fais un Ctrl + C, puis Ctrl + V pour dupliquer le bouton et je vais simplement modifier l’image de ce nouveau bouton dans la Feuille de propriétés Feuille de propriétés en remplaçant Marque par Supprimer Image Supprimer. Enfin, à la ligne Légende, j’écris Décocher, de même qu’à la ligne Texte d’info-bulle, mais pour la ligne Nom, j’écris Decocher, car il faut éviter les accents en VBA et nous en aurons besoin dans un instant.

Dans mon exemple, je vais donc utiliser un Bouton Bouton Access pour cocher et un autre pour décocher. Je trouve cela plus simple qu’un Bouton bascule Bouton bascule Access, d’une part, au niveau de la programmation et, d’autre part, cela évite d’avoir à cliquer 2 fois sur le bouton selon son état.

Enfin, je place ces 2 boutons au-dessus de la case à cocher de la partie Détail.

 

Écriture du code SQL pour le bouton Cocher

Pour cocher plusieurs cases en même temps, nous allons utiliser une requête mise à jour, mais écrite en VBA via du SQL. Si vous n’êtes pas familier avec le SQL, pas d’inquiétude, il y a une astuce pour l’écrire sans erreur. Nous pourrions d’ailleurs conserver une requête en tant qu’objet et la lancer en VBA, mais, personnellement, je préfère quand il y a le moins d’objets possible dans une base de données Access.

Rendez-vous dans le menu Créer > Création de requête Création de requête Access. Par le clic du bouton Cocher, nous souhaitons cocher tous les enregistrements du formulaire F_Clients sachant que ce dernier affiche tous les enregistrements de la table T_Clients sans aucun filtre. Si vous utilisez des filtres, il faudra également les ajouter à votre requête, sinon celle-ci n’en tiendra pas compte. Via le panneau Ajouter des tables (s’il n’apparaît pas, cliquez sur Ajouter des tables Ajouter des tables Access dans le menu Conception de requêtes), je double-clique sur la table T_Clients, puis, simplement, sur le champ Selection de la table. Dans le menu Conception de requêtes, je clique sur Mise à jour Requête Mise à jour Access pour créer une requête Mise à jour et, sur la nouvelle ligne qui est apparue dans la grille (Mise à jour), je saisis Vrai dans le but de cocher tous les enregistrements :

Requête Mise à jour Access case à cocher

L’astuce pour récupérer le code SQL de cette requête est de faire un clic droit sur l’onglet Requête1 > Mode SQL Bouton Mode SQL, puis de faire un Ctrl + C pour copier la sélection. Je peux ensuite fermer la requête sans l’enregistrer.

 

Programmation en langage VBA du bouton Cocher

Je retourne, maintenant, dans le formulaire F_Clients, toujours en Mode Création Mode Création Access et je clique sur le bouton Cocher, puis, dans la Feuille de propriétés Feuille de propriétés, à l’onglet Évènement, je clique sur les 3 points au bout de la ligne Au clic et je choisis le Générateur de code : cela ouvre la fenêtre VBA.

Nous allons coller le code SQL sous forme de chaîne de caractères, j’écris donc, dans la procédure :

MAJCase = "UPDATE T_Clients SET T_Clients.Selection = True"

MAJCase est le nom que je donne à cette chaîne de caractères, mais vous pouvez l’appeler autrement, et, entre guillemets, se trouve le code copié depuis la requête sans le point-virgule (;) de fin.

En dessous, j’écris :

DoCmd.RunSQL MAJCase

qui permet, comme son nom l’indique, d’exécuter une procédure nommée MAJCase. Il est toujours préférable de déclarer ses variables, c’est pourquoi je vais écrire :

Dim MAJCase As String

en dehors de la procédure, sous Option Explicit, car nous utiliserons également cette variable pour le bouton Décocher.

Comme il s’agit d’une requête Mise à jour, si je laisse ma procédure en l’état, j’aurais les messages classiques qu’Access affiche lorsqu’on exécute une requête action, or je souhaite que cela reste assez transparent pour l’utilisateur et je ne souhaite pas qu’il soit perdu en voyant des messages d’avertissement apparaître et qu’il ne sache pas quoi faire.

Pour cela, nous allons utiliser 2 lignes de code que j’ai déjà abordées dans le tutoriel Liste des principaux codes VBA que j’utilise sur Access.

J’écris donc en début de procédure :

DoCmd.SetWarnings False

Et, en fin de procédure :

DoCmd.SetWarnings True

N’oubliez surtout pas cette deuxième ligne, sinon vous ne serez plus averti de rien, même pas de la suppression accidentelle d’une table par exemple.

Pour terminer, ajoutez Refresh avant la fin de la procédure pour rafraîchir le formulaire. Je ferme la fenêtre VBA.

 

Programmation en langage VBA du bouton Décocher

Maintenant que notre bouton Cocher est programmé, nous allons passer au bouton Décocher. Cette fois, il est inutile de passer de nouveau par une création de requête puisqu’il faut simplement changer la mise à jour de True (Vrai) à False (Faux).

Cliquez sur le bouton Décocher du formulaire en Mode Création Mode Création Access et cliquez sur les 3 points au bout de la ligne Au clic de l’onglet Évènement de la Feuille de propriétés Feuille de propriétés pour ouvrir de nouveau le Générateur de code.

Ici, contentez-vous de copier les 5 lignes qui se trouvent à l’intérieur de la procédure du bouton Cocher et de les coller dans la procédure du bouton Décocher avant de changer le mot True en False à la ligne où est écrit le code SQL.

Il ne me reste plus qu’à fermer la fenêtre VBA et à enregistrer le formulaire pour le tester en Mode Formulaire Mode Formulaire Access : un clic sur le bouton Cocher Bouton Cocher Access coche toutes les lignes et un clic sur le bouton Décocher Bouton Décocher Access les décoche.

Vous retrouverez le fichier utilisé dans l’Espace Membres accessible aux abonnés à la newsletter.

Découvrez ma formation complète pour créer votre propre application Access afin d’automatiser un maximum de vos tâches quotidiennes et devenir plus efficace.

Inscription à la newsletter