Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Surligner la ligne de la cellule cliquée
Pour des démonstrations visuelles attractives et explicites, il est important de captiver l'attention de l'assemblée sans ambiguïté. Lorsqu'il s'agit de décortiquer les informations d'une
base de données en réunion, il peut s'avérer délicat de bien concentrer les esprits sur les données ciblées.
Cette formation apporte la solution sous forme d'astuce conditionnelle pour faire réagir dynamiquement la ligne complète, d'une donnée cliquée. Le focus lui est ainsi donné et les explications verbales peuvent se poursuivre pour l'agrémenter.
Base de données source
Pour la mise en oeuvre de la solution et la mise en place des démonstrations, nous proposons de réceptionner un
classeur Excel offrant des données à manipuler.
Du fait de la neutralisation de la sécurité, une erreur peut survenir. Elle est due au
code VBA déclenché par la
procédure événementielle au changement de sélection détecté.
- Ignorer cette alerte en cliquant sur le bouton Fin, fermer le classeur puis le rouvrir,
Désormais, le fichier est identifié. Ses actions programmées sont autorisées.
L'unique feuille de ce classeur offre une petite
base de données des clients d'une entreprise. Elle fera parfaitement l'affaire pour les démonstrations. L'idée consiste donc, au clic sur une cellule comme le code postal ou le prénom, à surligner dynamiquement l'intégralité de l'enregistrement, soit de la ligne dans le tableau. Et cette solution doit être livrée sans l'appui du
code VBA Excel.
Comme vous le savez, c'est la
mise en forme conditionnelle d'Excel qui permet de faire réagir dynamiquement les cellules d'une feuille. Mais généralement, l'apparence de ces cellules s'adapte automatiquement en fonction du contenu qu'elles portent. Ici, il n'est pas question de contenu mais de sélection. La ligne complète du tableau doit réagir au clic de l'utilisateur.
Nous proposons d'amorcer le raisonnement par une remarque prépondérante sur l'utilisation d'une
fonction Excel tout à fait spécifique. Il s'agit de la
fonction Cellule. Celle-ci, selon un paramètre qui lui est passé, retourne une indication ou une propriété pour la cellule active. La cellule active est précisément celle qui nous intéresse pour la mise en oeuvre de la solution.
- Sélectionner une case arbitraire et temporaire, par exemple la cellule J11,
- Taper le symbole égal (=) pour initier le calcul,
- Saisir le nom de la fonction suivi d'une parenthèse, soit Cellule(,
L'info-bulle dirigée par IntelliSense se déclenche. Elle propose toutes les valeurs du paramètre qu'il est possible de transmettre. Selon cette valeur, une propriété spécifique de la cellule active est retournée.
Et comme vous pouvez le voir, les informations de propriétés proposées sont relativement riches.
- Dans la liste des suggestions, double cliquer sur la valeur ligne,
- Fermer la parenthèse de la fonction cellule et valider le calcul par la touche Entrée,
La fonction retourne effectivement l'indice de ligne de la cellule active :
=CELLULE('ligne'). Avec le paramètre 'colonne', elle aurait retourné l'indice de la colonne pour la cellule active.
- Réaliser le raccourci clavier ALT + F11,
Ainsi, nous basculons dans l'
éditeur de code Visual Basic Excel.
- Dans l'explorateur de projet sur la gauche, double cliquer sur l'élément Feuil4 (Clients),
Ainsi et si ce n'était pas déjà le cas, nous affichons sa feuille de code au centre de l'écran. Nous y découvrons la présence d'une
procédure événementielle prépondérante :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Application.Calculate
End Sub
L'
événement SelectionChange associé à l'
objet Worksheet intime l'ordre de déclencher le
traitement VBA au changement de sélection sur la
feuille Excel. Et grâce à la
méthode Calculate de l'
objet Application, le recalcul de toutes les formules est commandé. Habituellement, ce recalcul est enclenché dès lors qu'une modification intervient dans une cellule. Mais dans notre application, il n'est pas question de modification mais de sélection. Voilà donc la raison de la présence de ce fragment de
code VBA que nous devons laisser intervenir et il s'agira de son unique apparition.
- Fermer l'éditeur VBA en cliquant sur la croix en haut à droite de la fenêtre,
Ainsi, nous sommes de retour sur la feuille principale.
Surligner l'enregistrement de la cellule active
Grâce à cette fonction, nous allons donc pouvoir élaborer une
règle de mise en forme conditionnelle toute simple. Elle doit consister à identifier si la ligne du tableau est identique à la ligne active, cliquée par l'utilisateur. Et comme vous le savez, la
fonction Excel qui retourne l'indice de ligne d'une cellule désignée est la
fonction Ligne :
= Ligne(Cellule). C'est cette correspondance que nous allons devoir établir.
- Sélectionner toutes les données du tableau des clients, soit la plage de cellules B7:H44,
- Dans la section Styles du ruban Accueil, cliquer sur le bouton Mise en forme conditionnelle,
- En bas de la liste des propositions, choisir l'option Nouvelle règle,
- Dans la boîte de dialogue qui suit, sélectionner le type : Utiliser une formule pour ...,
- Puis, cliquer dans la zone de saisie du dessous pour l'activer,
- Saisir alors la syntaxe suivante : =LIGNE($B7)=CELLULE('ligne'),
Nous cherchons à comparer l'indice de ligne de chaque cellule de la colonne B du tableau avec l'indice de ligne de la cellule active. Pour les passer toutes en revue, nous libérons la ligne et conservons la colonne figée ($B7), d'où la présence du dollar devant la lettre B. Chaque ligne doit en effet être passée en revue durant l'analyse effectuée par la
règle de la mise en forme conditionnelle. Et pour chacune, nous cherchons à établir la correspondance avec la ligne active (CELLULE('ligne')). Si l'équivalence est établie, alors la ligne complète du tableau doit surgir dans une mise en valeur dynamique explicitement différente.
- Pour cela, cliquer sur le bouton Format en bas de la boîte de dialogue,
- Dans la boîte de dialogue qui suit, activer l'onglet Remplissage,
- Dans la palette de couleurs, choisir un rouge foncé,
- Activer alors l'onglet Police de la boîte de dialogue,
- Avec la liste déroulante, choisir un gris très clair pour la couleur du texte,
- Valider ces attributs de format avec le bouton Ok,
Nous sommes de retour sur la première boîte de dialogue. Elle résume parfaitement la réaction à déclencher en cas de correspondance de ligne. L'intégralité de l'enregistrement doit être sur-brillé.
- Valider la création de la règle deformat dynamique en cliquant sur le bouton Ok,
Comme vous pouvez le voir, la première ligne apparaît instantanément mise en valeur. Comme vous le savez, dans une sélection, la première cellule de la plage est considérée comme active par défaut. De fait, son indice est renvoyé par la
fonction Cellule et la correspondance est établie avec la première ligne.
- Cliquer désormais sur une cellule d'une autre ligne à l'intérieur du tableau Excel,
Instantanément, l'intégralité de l'enregistrement surgit dans une mise en valeur explicitement différente. Voilà donc un procédé fort intéressant pour renforcer la pertinence des démonstrations vidéo.
Repérer dynamiquement les intersections
En déclinant le procédé, il est possible d'arrêter le repérage visuel dynamique sur la colonne de la cellule sélectionnée. Pour cela, il faut établir la correspondance avec l'attribut
colonne passé à la fonction Cellule et l'indice retourné par la
fonction Colonne. Et bien entendu, les deux critères doivent être recoupés grâce à la
fonction ET, selon la syntaxe suivante :
=ET(LIGNE($B7)=CELLULE('ligne'); COLONNE(B7)<=CELLULE('Colonne'))
Mais ici, nous proposons d'améliorer la solution pour repérer le croisement. Ainsi, nous mettrons en lumière la ligne, soit l'enregistrement, et la colonne de la cellule cliquée, soit le champ. Cette identification est intéressante dans le cas de bases de données denses et détaillées.
Nous proposons de cumuler deux règles. Ainsi la nouvelle, parée d'une mise en forme moins agressive, ne prendra pas le pas sur la première.
- Sélectionner de nouveau la plage de cellule B7:H44,
- Cliquer sur le bouton Mise en forme conditionnelle du ruban Accueil,
- En bas de la liste, choisir la proposition Nouvelle règle,
- Dans la boîte de dialogue qui suit, sélectionner le type : Utiliser une formule pour ...,
- Puis, cliquer dans la zone de saisie juste en dessous pour l'activer,
- Construire alors la syntaxe suivante : =COLONNE(B$7)=CELLULE('colonne'),
Cette fois, c'est bien évidemment l'information sur la colonne de la cellule cliquée (CELLULE('colonne')) que nous cherchons à comparer avec l'indice de chaque cellule du tableau. Et contrairement au cas précédent, nous libérons fort logiquement la colonne de la cellule passée en revue, tandis que nous figeons sa ligne (B$7). C'est ainsi que l'intégralité de la colonne sera concernée par la mise en valeur dynamique.
- Cliquer sur le bouton Format en bas de la boîte de dialogue,
- Dans la boîte de dialogue qui suit, activer l'onglet Remplissage,
- Dans la palette de couleurs, choisir un jaune pâle,
- Activer alors l'onglet Police de la boîte de dialogue,
- Avec la liste déroulante, choisir un rouge foncé pour la couleur du texte,
- Valider ces attributs de format avec le bouton Ok,
Grâce à cette nouvelle
règle, nous devrions désormais identifier, selon les attributs définis, l'intégralité de la colonne de la cellule cliquée en plus de sa ligne.
- Valider la création de la règle de mise en forme conditionnelle par le bouton Ok,
- Cliquer sur l'une des cellules du tableau des clients,
Comme vous le remarquez, il s'agit désormais d'un repérage dynamique croisé de la ligne et de la colonne pour la cellule cliquée.
Pour améliorer l'efficacité, nous pourrions aussi faire ressortir de façon évidente la cellule située au croisement, soit la cellule cliquée. Pour cela, il convient de créer une dernière règle avec la syntaxe suivante :
=ET(LIGNE(B7)=CELLULE('ligne'); COLONNE(B7)=CELLULE('colonne')). Aucune référence absolue n'est de mise dans ce cas. En effet, c'est légalité stricte sur la cellule concernée qui doit être observée. Elles doivent donc toutes être passées en revue.