Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Etablir les classements sur un formulaire
Sur un
formulaire Access énumérant des commerciaux avec leurs résultats, cette nouvelle
astuce montre comment calculer simplement les
classements respectifs et ce, à la volée.
Dans l'exemple finalisé illustré par la capture, cette information supplémentaire sur le
rang de chacun est fournie dans la partie grisée, sous la
barre de navigation personnalisée.
Source et présentation
Pour la mise en place de cette solution, nous proposons de récupérer une petite
base de données, construite au fil des
astuces précédentes.
Nous débouchons bien sur le
formulaire présentant les commerciaux indépendamment. La
barre de navigation personnalisée permet de les faire défiler. Sous cette dernière, la barre d'information grisée est fort logiquement vide à ce stade. C'est elle qui doit accueillir nos travaux pour les
calculs de rangs. La donnée qui doit être comparée aux autres est celle du chiffre d'affaires réalisé. Elle est contenue dans la zone d'intitulé Chiffre et porte le
nom com_ca, celui du champ d'origine dans la
table commerciaux. Si ce chiffre est le plus grand de tous, alors le commercial doit être classé premier.
Calculs de rangs
Pour établir ces
classements, nous devons exploiter la
fonction Access CpteDom. Dans sa version classique, elle permet de réaliser des dénombrements sur un champ d'une table. Mais avec un double critère spécifique que nous allons lui passer en troisième argument, elle va être en mesure de
calculer ces rangs. Cette
formule doit-être accueillie par une
zone de texte. Et nous allons le voir, cette zone de saisie existe déjà , bien que vide pour l'instant.
- A gauche du ruban Accueil, cliquer sur la flèche du bouton Affichage,
- Dans la liste des propositions, choisir le mode création,
- En bas du formulaire en conception, cliquer sur la zone intitulée Indépendant,
Si vous consultez sa
feuille de propriétés, vous notez qu'elle est nommée
Classement.
La
fonction CpteDom, tout comme les
fonctions SomDom et
RechDom, analyse toutes les données d'un champ d'une table désignée à la recherche de correspondances. Ces correspondances peuvent s'établir par rapport à un critère ou à des critères. Dans notre cas, nous devons nous assurer que l'identifiant du commercial (com_id) n'est pas identique à l'identifiant en cours d'analyse. Le commercial ne doit pas être comparé à lui-même pour ne pas fausser le
calcul du classement. Et dans le même temps, nous devons vérifier si son chiffre (com_ca) est supérieur au chiffre d'affaire de l'enregistrement en cours d'analyse. Une fois que la
fonction CpteDom aura passé en revue tous les enregistrements, elle saura combien de fois le chiffre du commercial est supérieur aux autres. C'est selon cette information qu'elle établira le
classement de chacun.
- Cliquer sur l'onglet Données de la feuille de propriétés pour le contrôle sélectionné,
- Cliquer dans la zone de sa propriété Source contrôle pour l'activer,
- Taper le symbole égal (=) pour initier la syntaxe de la source d'information,
- Inscrire tout d'abord le début de syntaxe suivant :
"Classement de " & [com_nom] & " : " &
Avant d'engager le calcul, nous enrichissons l'information d'une indication sur le nom du commercial en cours. Nous concaténons les parties statiques aux parties dynamiques à l'aide du Et Commercial (&).
- Inscrire le nom de la fonction suivie d'une parenthèse, soit : CpteDom(,
- Taper le symbole de l'astérisque entre guillemets, soit "*",
Peu importe le champ en effet. Il sera explicitement désigné pour le traitement dans la
clause Where en troisième argument.
- Taper un point-virgule (;) pour passer dans l'argument de la table à étudier,
- Désigner la table Commerciaux entre guillemets, soit : "Commerciaux",
- Taper un point-virgule (;) pour passer dans l'argument de la clause Where,
- Débuter la construction du double critère avec la syntaxe suivante : "com_id<>" & [com_id] &,
Nous nous assurons d'abord que l'Id en cours est différent de celui parcouru dans la table par la
fonction CpteDom. Comme nous le disions, le commercial en cours ne doit pas être pris en compte pour ne pas être comparé à lui-même. Le
contrôle sur le
formulaire est mentionné entre guillemets et sans crochets. Le
champ du même nom dans la
table est mentionné entre crochets. C'est ainsi que la distinction est faite.
- Puis terminer l'expression du critère comme suit : " AND com_ca>" & [com_ca])+1,
Grâce à l'
opérateur AND, nous recoupons donc une seconde condition. Nous vérifions en même temps que le CA en cours est inférieur au CA parcouru dans la
table. S'ils sont tous supérieurs et comme ce traitement est encapsulé dans la
fonction CpteDom, il en résulte le décompte de tous les
enregistrements vérifiant ces deux conditions, soit le
classement du commercial en cours. Après avoir fermé la parenthèse de la
fonction CpteDom, nous ajoutons une unité à ce décompte pour corriger le décalage. En effet et par exemple pour le plus gros CA, aucun ne le dépasse. Donc la
fonction CpteDom renvoie 0 pour le meilleur, soit un classement de 0 + 1 pour le premier.
- Enregistrer les modifications (CTRL + S) et exécuter le formulaire (F5),
Si vous faites défiler les enregistrements avec les boutons de la
barre de navigation personnalisée, vous constatez que tous les classements sont établis. Si vous ouvrez la table commerciaux et opérez un tri décroissant sur le
champ com_ca, vous confirmez la parfaite cohérence de ce
calcul de rang.