Jours de la semaine dans un mois (Microsoft Excel)
Vous êtes-vous déjà demandé combien d’un jour de semaine particulier se produisait 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 approche – celle-ci ne reposant pas sur une formule matricielle – consiste à tester la date dans la cellule A1 pour le jour de la semaine souhaité, comme spécifié dans E2.
(Encore une fois, une valeur de 1 à 7, comme dans l’exemple précédent.)
=IF(MONTH(DATE(YEAR(A1),MONTH(A1),1)-WEEKDAY(DATE(YEAR(A1),MONTH(A1),1)-E2)+35)=MONTH(A1),5,4)
La formule vérifie essentiellement s’il y a une cinquième instance dans le mois du jour de la semaine que vous vérifiez. Si tel est le cas, la valeur 5 est renvoyée; sinon, la valeur 4 est renvoyée. (La formule suppose à juste titre qu’il ne peut y avoir que 4 ou 5 instances d’un jour de la semaine donné, jamais moins et jamais plus.)
Des solutions macro-basées sont également disponibles. Une de ces solutions suit:
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 (2183) s’applique à Microsoft Excel 97, 2000, 2002 et 2003. Vous pouvez trouver une version de cette astuce pour l’interface ruban d’Excel (Excel 2007 et versions ultérieures) ici:
lien: / excelribbon-Weekdays_in_a_Month [Weekdays in a Month]
.