Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Marquer les rendez-vous dans un calendrier Excel
Dans cette
formation Excel, nous finalisons l'application permettant de gérer les
rendez-vous et
tâches planifiées. Dans les deux précédents volets, à l'aide du
code VBA, nous avons premièrement réussi à automatiser l'insertion de nouveaux rendez-vous dans le
calendrier annuel. Puis, nous avons développé une
interface de gestion de ces rendez-vous. Elle permet de modifier leur description ou encore de les supprimer.
Nous devons désormais faciliter leur repérage dans le calendrier pour alerter l'oeil. Il s'agit de déployer des couleurs dynamiques différentes, selon la proximité de la date en cours. Nous devons donc bâtir des
règles de mise en forme conditionnelles. Elles consistent à comparer chaque date du calendrier, avec les dates de toutes les tâches planifiées. La capture ci-dessus illustre une partie de l'application finalisée. Les événements passés sont grisés tandis que les tâches à venir sont repérées en bleu clair. Les rendez-vous imminents apparaissent quant à eux dans un orange assez vif. L'oeil ne peut pas les manquer.
Source et présentation de la problématique
Nous devons parachever l'
application de gestion des rendez-vous que nous avons développée dans les deux
formations VBA précédentes. C'est pourquoi il est nécessaire de reprendre les travaux là où nous les avons laissés.
Ce classeur est constitué de quatre feuilles. Elles sont toutes utiles et nécessaires. La
gestion des rendez-vous se déroule sur la
feuille Calendrier. Souvenez-vous : au choix du mois puis du jour, après avoir inscrit la description et après avoir cliqué sur le
bouton +, un nouveau rendez-vous apparaît dans le
calendrier. Il est repéré par la coche rouge de son commentaire dans la case de sa date. Ce commentaire reprend la description définie au moment de sa création. Au clic sur le
bouton -, nous affichons une
interface de gestion permettant de modifier ou supprimer une tâche désignée.
Une
liste déroulante se remplit de toutes les dates recensées, au chargement du
formulaire Excel. Et précisément, ces dates sont archivées dans un tableau de la
feuille Liste_rv avec leurs détails respectifs.
Pour mettre en oeuvre ces repérages dynamiques, il s'agit donc d'établir la correspondance entre les dates de ces rendez-vous archivés, et celles du
calendrier annuel.
Tableau évolutif
Le nombre de rendez-vous à évaluer ne peut pas être connu à l'avance. Les 365 jours d'une année peuvent être exploités si l'utilisateur est très occupé. Nous pourrions donc considérer un tableau de 365 lignes pour être sûr de n'oublier aucune tâche dans les critères de comparaison. Mais cette méthode est peu satisfaisante.
Nous proposons de nommer la plage de cellules de départ sur la
feuille Liste_rv. Puis, nous devons la
rendre dynamique grâce à la puissante fonction Excel Decaler. Comme son nom l'indique, à chaque rendez-vous ajouté dans la liste, elle permettra de faire varier la hauteur du tableau en conséquence.
La syntaxe de la
fonction Excel Decaler est la suivante :
=Decaler(Plage_de_départ ; Décalage_ligne ; Décalage_colonne ; [Hauteur] ; [Largeur])
La plage de départ peut très bien être représentée par une seule cellule. C'est notre cas. Il s'agit de la
cellule de titre Date, soit
D3 sur la
feuille Liste_rv. En effet, l'objectif est de trouver les correspondances de dates grâce à cette colonne. Nous souhaitons simplement adapter ses dimensions en fonction des tâches recensées et archivées. Seule la hauteur est à régler dynamiquement. Nous indiquerons donc la valeur zéro (0) pour les deux arguments :
Décalage_ligne et
Décalage_colonne. En quatrième argument, cette
hauteur doit être ajustée en fonction du nombre de tâches énumérées. C'est la
fonction Excel NbVal, comptant les cellules non vides, qui permet de retourner cette hauteur en nombre de lignes. La largeur est fixe quant à elle. Nous pouvons y inscrire le chiffre 2 pour définir un tableau de 2 colonnes, sur un nombre de lignes indéfini donc.
- Cliquer sur l'onglet Liste_rv en bas de la fenêtre Excel pour afficher sa feuille,
- Sélectionner la cellule D3,
- Dans la zone Noms, Ã gauche de la barre de formule, taper le texte : rv,
- Valider la saisie à l'aide de la touche Entrée du clavier,
Le point de départ du tableau est désormais nommé. Nous pourrons le désigner dans une formule grâce à ce nom. Mais pour l'instant, ce nom fait référence à une cellule fixe. Nous devons rendre la plage dynamique pour qu'elle évolue en hauteur en fonction du nombre de rendez-vous, soit du nombre de lignes non vides.
- Cliquer sur l'onglet Formules en haut de la fenêtre Excel pour activer son ruban,
- Dans la section Noms définis du ruban, cliquer sur le bouton Gestionnaire de noms,
- Dans la boîte de dialogue qui suit, sélectionner le nom rv,
En bas de la boîte de dialogue, la zone
Fait référence à , indique la plage ou plutôt la cellule concernée :
=Liste_rv!$D$3
Il s'agit du point de départ du tableau au contenu dynamique. Ces références doivent intervenir en premier argument de la
fonction Decaler, comme nous l'avons expliqué précédemment. Le nom de la feuille en préfixe est très important. Nous devons le conserver.
- Dans la zone Fait référence à , pour le nom rv, écrire la formule suivante :
=DECALER(Liste_rv!$D$3; 0; 0; NBVAL(Liste_rv!$B:$B)-1; 2)
Nous adaptons en hauteur (NBVAL(Liste_rv!$B:$B)-1) la plage de cellules commençant sur la ligne 3 de la colonne D (Liste_rv!$D$3) sans réaliser de décalage, ni en ligne ni en colonne. Nous retranchons une unité sur le décompte des lignes en hauteur, pour exclure la cellule de titre fusionnée sur la ligne 1. En effet, la
fonction NbVal est appliquée sur l'intégralité de la colonne B. Nous définissons un tableau sur 2 colonnes grâce au dernier argument (2). Ainsi nous incluons le contenu dans la sélection dynamique.
- Cliquer sur la petite coche verte à gauche de la zone Fait Référence à , pour valider la formule,
Si aucune alerte n'est déclenchée, cela signifie que la syntaxe est validée.
- Cliquer sur le bouton Fermer de la boîte de dialogue,
Désormais, la hauteur du tableau désigné par le
nom rv est censée grandir en même temps que de nouvelles tâches sont ajoutées à la suite de l'énumération.
Règles dynamiques de correspondances
Pour améliorer la pertinence du
calendrier annuel, nous souhaitons donc simplifier la lecture et le repérage des
rendez-vous. Jusqu'alors ils sont marqués par les coches de leurs commentaires. Elles sont précieuses mais trop discrètes. Nous souhaitons leur appliquer des couleurs de remplissage gris clair, bleu clair et orange vif. C'est donc une
mise en forme conditionnelle qui doit s'en charger. Les couleurs vont évoluer avec le temps pour deux raisons. Tout d'abord, la date évoluant chaque jour, des rendez-vous futurs vont devenir obsolètes. Du bleu clair, ils passeront automatiquement en gris clair. Et puis, de nouvelles tâches sont susceptibles d'être insérées régulièrement. La
mise en forme conditionnelle doit instantanément les intégrer et les repérer.
La
règle du format dynamique doit être minutieusement paramétrée. Si elle est satisfaite, les couleurs sont enclenchées. Elle doit consister à vérifier pour
chaque jour du
calendrier, si sa date est référencée dans le tableau des rendez-vous. Une telle correspondance peut être réalisée grâce à la
fonction Excel RechercheV. Sa syntaxe est la suivante :
=RechercheV(Valeur_cherchée; Tableau_de_recherche ; Colonne_de_retour ; Faux)
La
valeur cherchée correspond à chacune des dates du
calendrier. Bien qu'affichées au format court (Ex : Jeu 01), il s'agit bien des dates complètes interprétées comme telles par
Excel. Si vous souhaitez en avoir le coeur net, il suffit de basculer temporairement leur format d'affichage en
date courte. Le
tableau de recherche correspond à la liste des rendez-vous. Nous le désignerons par son nom dynamique, soit
rv. La
colonne de retour est le numéro de colonne à partir de laquelle nous souhaitons extraire l'information. Nous pourrons indiquer la deuxième colonne pour pointer sur le contenu par exemple. Enfin, le
booléen Faux en dernier argument permet de réaliser une recherche selon une correspondance exacte. La date cherchée est en effet précise.
Remarque : La
fonction Excel RechercheV ne fonctionne que si l'élément à chercher est situé en première colonne du tableau. C'est pourquoi nous avons judicieusement créer une plage dynamique débutant en
colonne D de la
feuille Liste_rv, celle des dates à trouver.
Si cette recherche conduit à un résultat (<>''), nous savons qu'un rendez-vous est référencé le même jour. Il doit donc être marqué d'une
couleur dynamique dans le
calendrier. Cette couleur dépend de la date du Jour. C'est la
fonction Excel Aujourdhui qui livre cette information dynamique. Par exemple, si la date du jour est supérieure à la date du rendez-vous, le rendez-vous est terminé. Il doit donc être repéré en gris clair. Pour recouper le critère sur la recherche et sur la date du jour, nous devons exploiter la
fonction Excel Et :
=Et(Critère1; Critère2 ; CritèreN)
Comme l'indique sa syntaxe, elle permet de recouper toutes les conditions à vérifier nécessairement ensemble.
- Cliquer sur l'onglet Calendrier en bas de la fenêtre Excel pour afficher sa feuille,
- Sélectionner toutes les cases du calendrier annuel, soit la plage de cellules C7:N37,
- Cliquer sur l'onglet Accueil en haut de la fenêtre Excel pour activer son ruban,
- Dans la section Styles du ruban, cliquer sur le bouton Mise en forme conditionnelle,
- En bas de la liste qui s'affiche, choisir Nouvelle règle,
- Dans la boîte de dialogue qui suit, sélectionner le type de règle : Utiliser une formule ...,
- Puis, cliquer dans la zone de saisie située juste en dessous,
- Taper le symbole = pour débuter la syntaxe du critère,
- Saisir le nom de la fonction pour énumérer les conditions, suivi d'une parenthèse, soit Et(,
- Saisir la fonction de recherche suivie d'une parenthèse, soit RechercheV(,
- Cliquer sur la première date du calendrier pour la désigner, soit la cellule C7,
- Enfoncer trois fois de suite la touche F4 du clavier pour la libérer,
Ainsi les dollars ($) disparaissent. Un
critère de mise en forme conditionnelle raisonne comme une formule. La première condition est posée sur la première cellule de la plage. Mais elles seront toutes passées en revue. Pour que chaque date puisse être cherchée dans le tableau des rendez-vous, il est donc impératif de supprimer les dollars. Nous la libérerons ainsi dans son déplacement en ligne comme en colonne.
- Taper un point-virgule (;) pour passer dans l'argument du tableau de recherche,
- Saisir son nom, soit : rv,
- Taper un point-virgule (;) pour passer dans l'argument de la colonne de retour,
- Saisir le chiffre 2 pour indiquer la colonne du contenu par exemple,
- Taper un point-virgule (;) pour passer dans le dernier argument,
- Saisir le texte Faux et fermer la parenthèse,
- Taper le symbole inférieur suivi du symbole supérieur suivi de deux guillemets, soit : <>'',
Ainsi nous cherchons à vérifier si la recherche produit une valeur en retour. En d'autres termes, nous cherchons à savoir si la date en cours dans le calendrier correspond à une date de rendez-vous.
- Taper un point-virgule (;) pour poursuivre l'énumération des critères de la fonction Et,
- Sélectionner la première date du calendrier, soit la cellule C7,
- Enfoncer trois fois la touche F4 du clavier pour la libérer comme précédemment,
- Taper le symbole inférieur (<) pour l'inégalité de la condition à respecter,
- Saisir la fonction livrant la date du jour dynamique, soit : Aujourdhui(),
- Fermer la parenthèse de la fonction Et pour terminer l'énumération,
Si les deux critères sont vérifiés ensemble, nous savons que le rendez-vous existe mais qu'il est passé. En conséquence, il doit être repéré en gris clair.
- Pour cela, cliquer sur le bouton Format situé en bas de la boîte de dialogue,
- Dans la nouvelle boîte de dialogue qui suit, activer l'onglet Remplissage,
- Choisir un gris relativement clair dans la palette des couleurs,
- Cliquer sur le bouton Ok pour valider ce réglage de mise en forme dynamique,
- De retour sur la première boîte de dialogue, valider de nouveau par Ok,
La syntaxe du critère que nous avons construit est la suivante :
=ET(RECHERCHEV(C7; rv; 2; FAUX)<>''; C7<AUJOURDHUI())
Comme vous le constatez et comme l'illustre la capture ci-dessus, toutes les tâches anciennes sont effectivement repérées. Il n'en est rien pour l'instant concernant les rendez-vous à venir ou actuels. Le deuxième critère de la règle que nous avons bâtie est explicite. Il exclut toutes les tâches dont la date n'est pas encore passée.
Il s'agit donc de reproduire exactement le même processus pour les deux prochaines mises en valeur. Dans l'énumération, le critère sur la reconnaissance de la date ne change pas :
RECHERCHEV(C7;rv;2;FAUX)<>''
Le second critère quant à lui doit être adapté. Pour les rendez-vous en cours, il doit vérifier l'égalité, soit :
C7=AUJOURDHUI(). Pour les rendez-vous à venir, il doit vérifier l'inégalité inverse :
C7>AUJOURDHUI().
- Sans oublier de resélectionner l'ensemble des cellules du calendrier, bâtir les deux nouvelles règles suivantes pour la mise en forme conditionnelle :
Orange vif :
=ET(RECHERCHEV(C7; rv; 2; FAUX)<>''; C7=AUJOURDHUI())
Bleu clair :
=ET(RECHERCHEV(C7; rv; 2; FAUX)<>''; C7>AUJOURDHUI())
A validation des deux règles, vous constatez que tous les rendez-vous apparaissent désormais explicitement mis en valeur dans le
calendrier Excel. Il est intéressant de réaliser une simulation complète de ce gestionnaire de rendez-vous.
- Avec la liste déroulante en cellule I3, choisir le mois en cours,
- Avec la liste déroulante en cellule J3, choisir le jour en cours,
- En cellule K2, saisir la description suivante : 10h : Stage sécurité,
- Puis, cliquer sur le bouton + pour insérer la nouvelle tâche,
Sa mise en valeur différente et dynamique permet de la repérer instantanément. Il est important de comprendre que ces
règles de mise en forme conditionnelle s'adaptent à l'évolution du calendrier. Un rendez-vous qui a lieu demain, apparaît aujourd'hui en bleu clair. Le jour suivant, à l'ouverture du classeur, il est automatiquement marqué en orange pour alerter sur l'approche de l'échéance.
Notre application de
gestion des rendez-vous avec Excel est terminée. Certaines améliorations sont à envisager, mais les grandes lignes du développement sont données.