Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Enumérer strictement les jours d'un mois
Pour construire des
plannings notamment, l'enjeu essentiel est de pouvoir recomposer dynamiquement tous les jours d'un mois défini, sans dépasser les bornes de ce dernier.
Dans l'exemple illustré par la capture, l'utilisateur choisit une
année et définit un
mois. A validation, un
planning se construit automatiquement sur la base de l'énumération de tous les
jours, pour ce
mois défini. Et bien sûr, cette liste se stoppe naturellement pour ne pas déborder sur le mois suivant, quelque soit le nombre de jours le composant.
Source et présentation
Nous proposons de débuter les travaux à partir d'un fichier offrant une structure préconçue.
Une première liste déroulante permet donc de définir l'année en
cellule C5. Une seconde permet de choisir le mois en
cellule F5. En guise de mois, il s'agit en fait de la date complète pour le premier jour du mois. Mais cette date est formatée spécifiquement pour n'afficher que l'information sur le mois. Cette astuce nous permettra d'établir plus facilement la correspondance sur le jour de mois servant à reconstruire toutes les
dates.
En colonne B, l'énumération des heures de la journée est proposée. Puis, en colonne C, vous constatez que l'ébauche de la construction du
calendrier est réalisée. Le premier jour du mois choisi est calculé en cellules C7 et C8 :
=DATE(C5;MOIS(F5);1). Sur cette date restituée, c'est un
format personnalisé qui permet tantôt de n'afficher que l'information sur le jour en texte et tantôt sur le jour en nombre. C'est sur la base de ce premier résultat que nous devons dérouler l'énumération de tous les jours de ce mois défini, sans déborder sur le mois suivant.
Lister tous les jours d'un mois
Pour produire l'énumération et la stopper précisément à échéance du mois, nous devons vérifier deux conditions. Tout d'abord, la date précédemment restituée ne doit pas être une cellule vierge. Aucun calcul ne doit être engagé lorsque la fin du mois est dépassée. Dans le même temps, nous devons nous assurer que cette date incrémentée d'une unité est toujours située dans le même mois.
- Sélectionner la première date à calculer en cliquant sur la cellule D7,
- Taper le symbole égal (=) pour initier la syntaxe de la formule,
- Inscrire la fonction conditionnelle suivie d'une parenthèse, soit : Si(,
- Désigner la date précédente en cliquant sur sa cellule C7,
- Puis, taper le critère suivant : <>'',
Comme nous le disions, nous cherchons premièrement à vérifier que le calcul de la précédente
date n'a pas conduit à un résultat vierge.
- Taper un point-virgule (;) pour passer dans la branche Alors de la fonction Si,
- Inscrire de nouveau la fonction conditionnelle suivie d'une parenthèse, soit : Si(,
Si la première condition est honorée, nous devons nous assurer que la date à construire appartient bien au même mois que la date précédente.
- Inscrire la fonction donnant le mois d'une date, suivie d'une parenthèse, soit : Mois(,
- Désigner la précédente date en cliquant sur sa cellule C7,
- Lui ajouter une journée, soit : +1,
- Fermer la parenthèse de la fonction Mois,
- Taper le symbole égal (=) pour annoncer le critère à satisfaire,
- Inscrire de nouveau la fonction pour le mois, suivie d'une parenthèse, soit : Mois(,
- Désigner encore la précédente date en cliquant sur sa cellule C7,
- Enfoncer la touche F4 du clavier pour la figer, ce qui donne : $C$7,
De cette manière, au fil de la réplication du calcul sur la droite pour toutes les
dates du mois, nous utilisons la première date comme élément de référence dans la comparaison. Si la date à venir appartient bien au même mois que la première date, le calcul peut être déroulé. Sinon, il doit être stoppé.
- Fermer la parenthèse de la fonction Mois,
- Puis, taper un point-virgule (;) pour passe dans la branche Alors de cette seconde fonction Si,
- Inscrire de nouveau la date incrémentée, soit : C7+1,
- Taper un point-virgule (;) pour passer dans la branche Sinon de cette seconde fonction Si,
- Taper deux guillemets ('') pour garder la cellule vide lorsque le mois est dépassé,
- Fermer la parenthèse de cette seconde fonction Si,
- Puis, taper un point-virgule (;) pour passer dans la branche Sinon de la première fonction Si,
- Inscrire de nouveau deux guillemets, soit : '',
- Fermer la parenthèse de cette première fonction Si,
- Puis, valider la formule par le raccourci clavier CTRL + Entrée,
De cette manière, nous conservons active la cellule du résultat. Ainsi, nous allons pouvoir l'exploiter dans l'enchaînement. Au passage, vous notez que la date formatée produite est parfaitement cohérente. Il s'agit bien du jour suivant le premier jour construit à partir de l'année et du mois.
- Cliquer et glisser la poignée de la cellule à l'horizontale jusqu'en colonne AG,
L'énumération des jours de la semaine est parfaitement respectée. Après chaque
Dimanche, elle repart bien à partir du
Lundi. En relâchant la poignée de la cellule, vous remarquez que des couleurs viennent remplir le planning pour parfaire automatiquement sa construction sur les journées entières.
Ce sont des
règles de mise en forme conditionnelle exploitant la
fonction Excel Mod qui appliquent des couleurs de fond alternées lorsque la date en entête de colonne est bien renseignée. C'est aussi cette astuce qui va permettre de stopper ce remplissage précisément sur la
fin du mois, lorsque celui-ci compte moins de jours. Pour parfaire cette construction, finalement triviale, il nous manque la précision sur le numéro du jour dans le mois. Le formatage est déjà prêt sur la ligne du dessous. Le calcul est strictement identique.
- En cellule D8, répliquer la syntaxe précédente, soit :
=SI(C7<>''; SI(MOIS(C7+1)=MOIS($C$7); C7+1; ''); '')
- Valider la formule par le raccourci clavier CTRL + Entrée,
- Puis, tirer la poignée du résultat à l'horizontale jusqu'en colonne AG,
Désormais, la précision des numéros enrichit l'affichage des jours de semaine pour le mois désigné. Et bien sûr, si vous changez de mois et/ou d'année, le calendrier se recompose automatiquement.
L'année 2020 est une
année bissextile. Si vous choisissez le mois de Février, vous constatez que l'énumération de ses jours se stoppe parfaitement après le vingt neuvième.