Jours de la semaine dans un mois (Microsoft Excel)
Vous êtes-vous déjà demandé combien d’un jour de semaine particulier se produit dans un mois donné? Pour certaines personnes, il est important de savoir combien de mardis il y a dans un mois. Et qui ne veut pas savoir si un mois donné aura quatre ou cinq samedis?
Excel n’inclut pas de fonction intrinsèque que vous pouvez utiliser pour déterminer le nombre de fois qu’un jour de la semaine particulier se produit dans un mois donné. Vous pouvez cependant créer vos propres formules et fonctions pour accomplir la tâche.
Tout d’abord, considérons la formule suivante.
=4+N((WEEKDAY(DATE(YEAR($A$1),MONTH($A$1),1))) (DAY(DATE(YEAR($A$1),MONTH($A$1)+1,0))-28)>(7*(( WEEKDAY(DATE(YEAR($A$1),MONTH($A$1),1)))>(1+ROW()- ROW($A$2)))+(1+ROW()-ROW($A$2))))
La formule repose sur une date en A1. Cette date doit être celle du mois où vous souhaitez «tester». La formule est destinée à être copiée dans une cellule de la ligne 2, puis copiée dans les six cellules directement en dessous. Par exemple, vous pouvez copier cette formule dans la plage de cellules B2: B8. La première réponse (B2) est le nombre de dimanches dans le mois, la seconde (B3) est le nombre de lundis, et ainsi de suite.
L’inconvénient de cette formule est qu’elle utilise la position de la cellule contenant la formule dans le cadre de la formule. Cela signifie que la formule doit être placée quelque part à partir de la deuxième ligne.
Un autre inconvénient est que la formule est assez longue et complexe. Si vous voulez une formule plus courte, vous devez vous tourner vers une formule matricielle. Une formule pratique que vous pouvez utiliser suppose que vous fournissez trois arguments: l’année (cellule C2), le mois (cellule D2) et un jour de la semaine (cellule E2). Avec ces trois éléments, la formule suivante fonctionne très bien:
=SUM(IF(WEEKDAY(DATE(C2, D2, ROW(INDIRECT("1:" & DAY(DATE(C2, D2+1, 0))))))=E2, 1, 0))
N’oubliez pas qu’il s’agit d’une formule matricielle, ce qui signifie que vous devez la saisir en appuyant sur Maj + Ctrl + Entrée. De plus, la valeur du jour de la semaine que vous entrez dans la cellule E2 doit être comprise entre 1 et 7, où 1 est dimanche, 2 est lundi, etc.
Une autre excellente formule que vous pouvez utiliser est la suivante:
=NETWORKDAYS.INTL(DATE(YEAR(A1),MONTH(A1),1),EOMONTH(A1,0), REPT("1",B1-1) & "0" & REPT("1",7-B1))
Cette formule généralisée n’a besoin que de deux valeurs pour fonctionner correctement. Le premier est une date comprise dans le mois que vous souhaitez analyser; cela va dans la cellule A1. Dans la cellule B1, vous devez placer un indicateur du jour de la semaine que vous souhaitez compter. Cette valeur est différente de celle de la formule précédente – alors qu’elle doit toujours être comprise entre 1 et 7, 1 est lundi, 2 est mardi, etc.
Si la conception de votre feuille de calcul ne vous permet pas d’entrer l’année, le mois et le jour de la semaine dans différentes cellules, une solution propre consiste à créer une fonction définie par l’utilisateur pour renvoyer le décompte. La macro suivante est un exemple de ce type de fonction.
Function MonthWeekDays(dDate As Date, iWeekDay As Integer) Dim dLoop As Date If iWeekDay < 1 Or iWeekDay > 7 Then MonthWeekDays = CVErr(xlErrNum) Exit Function End If MonthWeekDays = 0 dLoop = DateSerial(Year(dDate), Month(dDate), 1) Do While Month(dLoop) = Month(dDate) If WeekDay(dLoop) = iWeekDay Then _ MonthWeekDays = MonthWeekDays + 1 dLoop = dLoop + 1 Loop End Function
Vous utilisez la fonction en entrant ce qui suit dans une cellule:
=MonthWeekDays(A1,4)
Dans cet usage, le premier argument (cellule A1) contient une date du mois évalué. Le deuxième argument est une valeur numérique représentant le jour de la semaine que vous souhaitez compter. Cette valeur doit être comprise entre 1 et 7, 1 étant dimanche, 2 lundi, etc.
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (5684) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365. Vous pouvez trouver une version de cette astuce pour l’ancienne interface de menu d’Excel ici:
link: / excel-Weekdays_in_a_Month [Weekdays in a Month]
.