formateur informatique

Dates d'un jour de semaine entre deux dates

Accueil  >  Bureautique  >  Excel  >  Excel Avancé  >  Dates d'un jour de semaine entre deux dates
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :

Abonnez-vous gratuitement à la chaîne Youtube Rossetti Stéphane .
Sujets et formations similaires :


Jours de semaine entre deux dates

Dans ce cas pratique, nous allons démontrer comment il est possible de restituer toutes les dates d'un jour de semaine précis, pour une période variable définie par l'utilisateur.

Extraire toutes les dates pour un jour de semaine précis dans un intervalle défini avec Excel

Dans l'exemple illustré par la capture, l'utilisateur définit une période débutant le 1er Avril 2020 et s'achevant le 30 Mai 2020. De même, il choisit le jour de semaine 5, soit le Vendredi. Et aussitôt, un calcul restitue les dates de tous les Vendredis situés entre ces deux bornes. C'est une technique matricielle qui apporte la solution.



Source et présentation
Nous proposons tout d'abord de récupérer une petite structure existante pour simplifier les travaux. L'extraction des dates doit intervenir en colonne E, à partir de la cellule E5. Cette extraction dépend de trois contraintes. Il s'agit tout d'abord de la date de début à renseigner en cellule C5. Il s'agit ensuite de la date de fin à inscrire en cellule C7. Enfin, il s'agit de spécifier le numéro de semaine, grâce à une liste déroulante en cellule C9. D'ailleurs, en modifiant ce numéro de semaine, vous constatez que le jour correspondant est automatiquement inscrit en toutes lettres juste en-dessous, en cellule C10. Il existe un petit tableau de correspondance entre ces numéros et les jours sur la droite de la feuille, entre les colonnes S et T. En C10, l'extraction du jour en texte est réalisée grâce à la fonction RechercheV : =SIERREUR(RECHERCHEV(C9; S2:T8; 2; FAUX); '')

Extraire les dates d'un jour de semaine
Nous le disions, pour restituer toutes les dates d'un jour de semaine sur une période définie, des techniques matricielles sont nécessaires. L'idée consiste à agir sur une matrice virtuelle représentant toutes les dates dans l'intervalle. Sur cette matrice, un critère doit vérifier les correspondances trouvées avec le jour de semaine spécifié. Les fonctions Si et JourSem doivent être impliquées dans ce raisonnement matriciel. De plus, pour que ces dates soient regroupées, la fonction Petite.Valeur est incontournable.
  • Sélectionner la plage de cellules E5:E14,
  • Taper le symbole égal (=) pour initier la formule matricielle,
  • Inscrire la fonction de gestion des anomalies suivie d'une parenthèse, soit : SiErreur(,
Arbitrairement, nous décidons de restituer 10 dates dans l'intervalle défini, ni plus ni moins. Mais il se peut que la période soit raccourcie et que le nombre à afficher soit inférieur. Dans ce cas, pour que la formule répliquée ne génère pas d'erreur, nous décidons de les neutraliser.
  • Taper la fonction regroupant les petites valeurs suivie d'une parenthèse, soit : Petite.Valeur(,
Cette extraction croissante des dates correspondantes regroupées est soumise à critère.
  • En conséquence, inscrire la fonction conditionnelle suivie d'une parenthèse, soit : Si(,
Ces correspondances doivent être établies sur les jours de semaine.
  • Inscrire la fonction pour le jour de semaine d'une date suivie d'une parenthèse, soit : Joursem(,


Bien entendu, ce sont toutes les dates qui doivent être analysées. Nous n'allons donc pas lui passer une seule date mais la matrice virtuelle représentant toutes les dates comprises dans l'intervalle défini. C'est la fonction Ligne avec les bornes inférieures et supérieures qui permet de simuler cette matrice.
  • Inscrire cette fonction suivie d'une parenthèse, soit : Ligne(,
Nous le disions cette matrice est virtuelle. Nous allons la construire de toutes pièces en transmettant ses bornes par l'intermédiaire des cellules pour la date de début et la date de fin. Elle doit donc être interprétée.
  • Inscrire la fonction d'interprétation suivie d'une parenthèse, soit : Indirect(,
  • Inscrire les coordonnées de la date de début, soit C5,
Ainsi, nous définissons la borne supérieure pour la matrice des dates à analyser.
  • Taper le symbole de concaténation (&) pour poursuivre la construction de la matrice,
  • Inscrire le symbole deux points entre guillemets, soit : ':',
Ainsi, nous annonçons la borne inférieure à suivre pour finaliser la construction de la matrice.
  • Taper de nouveau le symbole de concaténation, soit : &,
  • Désigner la date de fin en cliquant sur sa cellule C7,
  • Fermer la parenthèse de la fonction Indirect,
  • Puis, fermer la parenthèse de la fonction Ligne,
  • Taper un point-virgule (;) pour passer dans le second argument de la fonction JourSem,
  • Saisir le chiffre 2 pour raisonner sur le calendrier français,
Ainsi, la fonction JourSem considère le Lundi comme le premier jour de la semaine. Par défaut, elle raisonne sur le calendrier américain. Et dans ce contexte, c'est le Dimanche qui est considéré comme le premier jour de la semaine.
  • Fermer la parenthèse de la fonction JourSem,
  • Taper le symbole égal (=) pour l'égalité du critère à honorer,
  • Puis, cliquer sur la cellule C9 pour désigner le numéro de semaine choisi,
De cette manière, nous cherchons toutes les dates de cette matrice virtuelle pour lesquelles le numéro de semaine est identique à celui défini par l'utilisateur avec la liste déroulante.
  • Taper un point-virgule (;) pour passer dans la branche Alors de la fonction Si,
  • Reconstruire exactement la même matrice que celle du critère : Ligne(Indirect(C5 & ':' & C7)),
Nous désignons donc de nouveau la matrice de toutes les dates comprises entre la borne de départ et la borne de fin. Mais comme elle est soumise à la condition de la fonction Si, seules les dates concordant avec le numéro de semaine seront retenues. De plus, comme elle est inscrite dans la fonction Petite.Valeur, le rang de cette dernière va permettre de les extraire certes dans l'ordre croissant, mais surtout de façon regroupée.
  • Fermer la parenthèse de la fonction Si,
Sa branche Sinon est ainsi ignorée. Les non concordances ne nous intéressent pas.
  • Taper un point-virgule (;) pour passer dans l'argument du rang de la fonction Petite.Valeur,
  • Saisir alors la syntaxe suivante : {1;2;3;4;5;6;7;8;9;10},
Les accolades sont prépondérantes. Ce sont elles qui définissent une matrice de rangs à respecter dans ce raisonnement matriciel. En partant de la plus petite valeur, nous indiquons que nous souhaitons tout d'abord extraire la date correspondante la plus petite, et les suivantes jusqu'à la dixième.
  • Fermer la parenthèse de la fonction Petite.Valeur,
  • Taper un point-virgule (;) pour passer dans le second argument de la fonction SiErreur,
  • Inscrire deux guillemets, soit : '', pour neutraliser les anomalies si elles apparaissent,
  • Puis, fermer la parenthèse de la fonction SiErreur,
  • Enfin, valider cette formule matricielle par le raccourci clavier CTRL + MAJ + Entrée,
Toutes les dates apparaissent. Comme vous pouvez le voir, elles correspondent toutes au jour de semaine choisi. De plus, elles appartiennent toutes à l'intervalle défini par les bornes de la période. La syntaxe de la formule matricielle que nous avons construite est la suivante :

=SIERREUR(PETITE.VALEUR(SI(JOURSEM(LIGNE(INDIRECT(C5 & ':' & C7)); 2)=C9; LIGNE(INDIRECT(C5 & ':' & C7))); {1; 2; 3; 4; 5; 6; 7; 8; 9; 10}); '')



Extraire les dates dans un intervalle pour un jour de semaine précis par formule matricielle Excel

Bien sûr, si vous changez le numéro du jour de la semaine, les résultats s'actualisent parfaitement pour offrir toutes les dates correspondantes, à l'intérieur de la période définie.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn