Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Compter les enregistrements sélectionnés
Cette nouvelle
astuce propose de montrer avec quelle facilité il est possible de
compter les lignes sélectionnées sur un
formulaire Access.
Sur l'exemple illustré par la capture, l'utilisateur coche les activités de sorties qu'il souhaite mémoriser. Aussitôt, des informations de synthèse s'actualisent dans des zones de texte placées dans la partie supérieure du
formulaire. Elles rendent compte du nombre d'enregistrements sélectionnés et du nombre d'enregistrements restants.
Source et procédure
Pour démontrer cette
astuce, nous proposons de récupérer une
base de données, fruit de nos travaux précédents.
- Télécharger le fichier compter-lignes.rar en cliquant sur ce lien,
- Le décompresser dans le dossier de votre choix,
- Double cliquer sur le fichier résultant pout l'ouvrir dans Access,
- Puis, cliquer sur le bouton Activer le contenu du bandeau de sécurité,
- Dans le volet de navigation, double cliquer sur le formulaire f_source pour l'exécuter,
- Avec la première liste déroulante, choisir un département,
Comme vous pouvez le voir, les activités de sorties correspondantes sont aussitôt extraites. En bout de ligne, elles sont chacune accompagnées d'une
case à cocher. Elles sont le fruit du
champ s_sel issu de la
table t_sorties. Son type de données est calibré sur Oui/Non, soit une
case à cocher. Et bien sûr, ce champ est utilisé par la
requête r_source qui sert de source de données au
formulaire.
Si vous cochez ces cases sur le
formulaire, elles réagissent parfaitement.
Mais bien sûr à ce stade, les deux zones de textes conçues pour les résultats de synthèse restent muettes.
Comptabiliser les lignes sélectionnées
Une
case cochée est sanctionnée par la valeur -1 pour Vrai et 0 pour faux, soit décochée. L'idée consiste donc à calculer la valeur absolue de la somme des
cases cochées. Nous obtiendrons ainsi le nombre total de lignes sélectionnées parmi les enregistrements filtrés sur le
formulaire.
- A gauche du ruban Accueil, cliquer sur la flèche du bouton Affichage,
- Dans la liste des propositions, choisir le mode création,
- Sur le formulaire en conception, cliquer sur la première zone de texte,
Elle est située à droite de la seconde
liste déroulante.
La
feuille de propriétés est nécessaire pour la suite des opérations. Si elle n'est pas visible dans votre environnement, vous devez cliquer sur le bouton du même nom dans le
ruban contextuel Création.
Cette
feuille de propriétés indique notamment que cette zone de saisie porte le nom
nbSel.
- Activer l'onglet Données de la feuille de propriétés,
- Dans la zone Source contrôle, saisir la syntaxe suivante : =-Somme([s_sel]),
Comme nous l'avons expliqué, vous notez la présence du symbole moins (-) en préfixe de l'opération pour transformer cette somme en valeur positive. Et cette addition est naturellement engagée sur le
champ s_sel, celui des
cases à cocher.
- Valider la syntaxe à l'aide de la touche Entrée du clavier,
- Puis, enregistrer les modifications (CTRL + S),
Le processus n'est pas complètement abouti. Pour que les résultats s'actualisent à chaque clic sur une
case à cocher, une
action de macro est nécessaire. Son rôle est d'actualiser les liaisons et de forcer le recalcul.
- Cliquer sur le contrôle de la case à cocher pour le sélectionner,
- Activer l'onglet Evénement de sa feuille de propriétés,
- Cliquer sur le petit bouton situé à l'extrémité droite de son événement Au clic,
- Dans la boîte de dialogue qui se propose, choisir le Générateur de macro et valider par Ok,
- Dans l'éditeur de macro, déployer la liste déroulante des actions,
- Dans la liste des propositions, choisir l'action AfficherTousEnreg,
- Dans le ruban Création, cliquer sur le bouton Enregistrer puis sur le bouton Fermer,
- De retour sur le formulaire, l'enregistrer à son tour pour actualiser la liaison,
- Dès lors, l'exécuter avec la touche F5 du clavier par exemple,
- Choisir un département avec la première liste déroulante,
- Puis, cocher certaines cases des enregistrements filtrés,
Comme vous le constatez, à chaque clic, le compteur d'enregistrements sélectionnés s'actualise aussitôt. Et si vous changez de département et cochez de nouvelles cases, le compteur ne cumule pas toutes les
cases cochées mais seulement celles en vigueur pour le département choisi. Ce fonctionnement s'explique du fait que nous avons bâti le calcul sur le
champ s_sel de la
requête filtrante r_source. Le résultat livré est donc celui que nous souhaitions.
Compter les lignes non sélectionnées
Désormais, nous souhaitons afficher l'information de synthèse sur les enregistrements restants dans l'autre zone de texte. Le principe est simple. Il consiste à faire la différence entre le nombre total d'enregistrements filtrés et le nombre de lignes cochées. La
fonction Compte entre autres permet de totaliser ces données.
- Revenir sur le formulaire en mode conception,
- Sélectionner la deuxième zone de texte, placée à droite de la précédente,
- Activer l'onglet Données de sa feuille de propriétés,
- Dans sa zone Source contrôle, saisir la syntaxe suivante : =Compte(*) + Somme([s_sel]),
Grâce au symbole de l'astérisque, nous considérons toutes les données. La
fonction Compte se charge de les totaliser. Nous ajoutons la valeur négative sur le décompte des lignes sélectionnées. Nous devrions bien obtenir le nombre total d'enregistrements restants.
- Valider la syntaxe avec la touche Entrée du clavier,
- Enregistrer le formulaire et l'exécuter,
- Sélectionner un département avec la première liste déroulante,
- Puis, cocher et décocher des cases,
Vous notez l'actualisation instantanée des deux compteurs. Et ces résultats sont parfaitement cohérents, puisqu'une fois additionnés, ils livrent la même valeur que celle rappelée sous la première liste déroulante.
Avant de terminer, sachez que comme ces cases sont des
champs de la table source, leur empreinte est mémorisée. Donc, à la prochaine ouverture, les cases anciennement cochées conserveront cette apparence. Dans une prochaine
astuce, nous verrons comment réinitialiser ces états à la fermeture du
formulaire par exemple.