Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Liste des données au clic
Vous l'avez sans doute déjà constaté, au fur et à mesure que vous remplissez les données d'une colonne,
Excel construit des
listes de connaissances. Dans ces listes, il exclut tout ce qui existe déjà et consolide toutes les informations différentes. D'ailleurs, lorsque vous démarrez la saisie d'une nouvelle cellule, si les
premières lettres correspondent aux mêmes premières lettres de précédentes inscriptions,
Excel vous les suggère automatiquement pour que vous n'ayez plus qu'à valider l'une d'entre elles.
Nous souhaitons exploiter cette fonctionnalité par le
code VBA pour améliorer encore l'ergonomie. C'est ce qu'illustre l'exemple finalisé présenté par la capture. Nous travaillons sur un tableau des résultats réalisés par les commerciaux d'une entreprise. Ils ne sont que quatre mais ils interviennent plusieurs fois chacun. Dès que l'utilisateur clique dans une cellule de la deuxième colonne de ce tableau, une liste se déploie automatiquement, juste en-dessous de la case. Elle offre la synthèse de tous les commerciaux inscrits dans cette colonne, sans doublons. C'est ainsi que l'utilisateur n'a plus qu'à cliquer sur l'un d'entre eux, pour procéder à son inscription ou encore à une modification.
Classeur Excel à télécharger
Pour développer cette nouvelle fonctionnalité, nous suggérons d'appuyer l'étude sur ce tableau des chiffres d'affaires.
Nous retrouvons bien le tableau des résultats. Les commerciaux sont énumérés avec leurs chiffres, à des dates précises, en
colonne C. Des couleurs leurs sont attribuées, par des règles de mise en forme conditionnelle, selon les critères émis par la grille située entre les colonnes F et G.
- Cliquer sur une case de la colonne C, par exemple la cellule C8,
- Puis, avec la touche Alt maintenue, taper sur la flèche dirigée vers le bas du pavé directionnel,
Comme vous pouvez le voir,
Excel a effectivement synthétisé les données de cette colonne, sans doublons, puisque cette action a pour effet d'ouvrir une liste de tous les commerciaux qui y sont présents. Il n'y a plus qu'à choisir.
C'est précisément ce résultat que nous souhaitons reproduire par le
code VBA, mais directement au clic dans n'importe quelle cellule de la colonne, pour plus de simplicité et de confort.
Code VBA au clic
Le code que nous allons construire doit se déclencher au
changement de sélection (Clic). Il doit vérifier que la cellule appartient bien à la
colonne C. Il doit enfin simuler l'action au clavier (ALT + Flèche bas), pour déployer automatiquement cette liste de connaissances.
- Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Excel,
- Dans l'explorateur de projet, double cliquer sur l'élément Feuil1(nbCoulMfc),
Ainsi, nous affichons la
feuille de code VBA associée à la
feuille Excel. Elle apparaît au centre de l'écran et elle est vierge pour l'instant.
- En haut de cette feuille de code, déployer la liste déroulante de gauche,
- Dans les propositions, choisir l'objet Worksheet,
Cette action a pour effet de créer la
procédure événementielle Worksheet_SelectionChange. Son code se déclenchera dès que l'utilisateur cliquera dans une autre cellule.
Vérifier la cellule cliquée
Nous souhaitons déclencher ces listes ergonomiques aux clics certes, mais seulement dans la
colonne C, celle des noms des commerciaux. Nous optimiserons ainsi les ressources. Nous devons donc d'abord vérifier que la
cellule cliquée appartient bien à cette rangée. C'est l'
objet Target, passé en paramètre de la procédure, qui représente cette cellule lorsque l'événement du clic survient. C'est la
fonction Intersect qui permet de savoir si deux plages possèdent des cellules en commun.
...
If Not Intersect(Range("C2:C100"), Target) Is Nothing And Target.Count = 1 Then
End If
...
Nous passons deux plages à la
fonction Intersect. La première concerne la
colonne C des commerciaux. Nous prévoyons large si d'aventure de nouveaux commerciaux venaient à être ajoutés à la suite du tableau. La seconde concerne la
cellule cliquée. Si cette
intersection conduit bien à une cellule (Not ... Is Nothing), nous en déduisons que la case cliquée appartient bien à la rangée des commerciaux. Dans le même temps, grâce à la
propriété Count de l'
objet Target, nous nous assurons qu'il ne s'agit pas d'une multi sélection. Si ces deux conditions sont remplies, alors (Then) nous poursuivons le traitement.
Simuler l'action au clavier
Excel offre une fonction pour réaliser des
actions du clavier par le
code VBA. Elle se nomme
SendKeys. C'est grâce à elle, au clic de l'utilisateur, que nous allons pouvoir simuler le
raccourci ALT + Flèche bas.
- Dans les bornes de l'instruction conditionnelle, ajouter la ligne VBA suivante :
...
SendKeys "%{down}"
...
Le symbole du pourcentage représente la touche Alt que nous associons avec la touche de la flèche dirigée vers le bas.
Déclencher les listes au clic
Vous en conviendrez, ce code est trivial. Nous pouvons d'ores et déjà le tester.
- Revenir sur la feuille Excel (ALT + Tab),
- Puis, réaliser quelques clics dans la colonne C,
Comme vous pouvez l'apprécier, les listes des données consolidées que nous appelions autrefois par raccourci clavier, surgissent désormais au simple clic, grâce au code VBA. L'utilisateur peut donc facilement désigner une personne sans devoir saisir son nom.
De plus, il est intéressant de constater que si vous ajoutez de nouveaux vendeurs en queue de colonne, aux clics suivants, ils sont automatiquement intégrés dans cette liste, décidément pratique. Remarque : La mise en forme conditionnelle peut être reproduite par le pinceau du ruban Accueil.