Années au cours desquelles une date est survenue un jour particulier (Microsoft Excel)
Harold essaie de concevoir une formule qui lui dira les cinq dernières années au cours desquelles une date particulière (disons le 10 mai) s’est produite un jour particulier de la semaine (disons jeudi).
Il existe plusieurs façons de déterminer ces informations. Un moyen simple consiste, dans une nouvelle feuille de calcul, à entrer la date que vous souhaitez tester (par exemple, 10/05/18) dans la cellule A1. Juste en dessous, dans la cellule A2, entrez une date un an plus tôt: 10/05/17. Sélectionnez ces deux cellules et faites glisser la poignée de remplissage vers le bas pour le nombre de cellules souhaité, et vous vous retrouvez avec une colonne contenant la date du 10 mai sur les années décroissantes.
Ensuite, dans la cellule B1, entrez la formule suivante:
=WEEKDAY(A1)
Copiez cette formule pour autant de lignes que de dates dans la colonne A.
Cela renvoie une valeur, 1 à 7, représentant le jour de la semaine pour les dates de la colonne A. Puisque 1 = dimanche, 2 = lundi, etc., cela signifie que toute valeur de 5 représenterait un jeudi. Ainsi, vous pouvez placer cette formule dans la cellule C1 et la copier:
=IF(B1=5,YEAR(A1),"")
Ceci « appelle » les années au cours desquelles la date dans la colonne A est un jeudi.
Vous pouvez, si vous préférez, simplement renoncer à ajouter la colonne C et, à la place, utiliser le filtrage pour n’afficher que les dates où la valeur de la colonne B est 5 (jeudi).
Vous pouvez également utiliser une formule matricielle pour trouver les informations souhaitées.
Tout d’abord, sélectionnez cinq cellules dans la colonne de votre choix. Ensuite, tapez ce qui suit dans la barre de formule:
=LARGE((WEEKDAY(DATE(ROW(1918:2018),5,10))=5)*ROW(1918:2018),ROW(1:5))
Entrez la formule en appuyant sur Ctrl + Maj + Entrée. Le résultat est que les cinq cellules contiendront les cinq dernières années au cours desquelles le 10 mai était un jeudi. Vous pouvez rendre la formule plus polyvalente en remplaçant les éléments clés par des plages nommées, de cette manière:
=LARGE((WEEKDAY(DATE(ROW(1918:2018),MO,DA))=DW)*ROW(1918:2018),ROW(1:5))
Il ne vous reste plus qu’à créer les plages nommées MO (mois), DA (jour) et DW (jour de la semaine). Lorsque vous modifiez les valeurs de ces plages nommées, la formule matricielle met à jour les cinq cellules pour refléter les années souhaitées.
Une troisième façon de trouver les informations consiste à créer une macro qui demande une date de début et un jour de la semaine. La macro peut alors reculer d’une année à la fois jusqu’à ce qu’elle attrape cinq années qui répondent aux critères.
Sub CalcDates() Dim sTemp As String Dim dBegin As Date Dim dWork As Date Dim J As Integer Dim iDoW As Integer Dim iYears(5) As Integer sTemp = InputBox("Beginning Date?") dBegin = CDate(sTemp) If dBegin > 0 Then sTemp = InputBox("Day of Week?") sTemp = LCase(Trim(sTemp)) iDoW = 0 For J = 1 To 7 If sTemp = LCase(WeekdayName(J)) Then iDoW = J Next J If iDoW > 0 Then dWork = dBegin J = 0 While J < 5 If Weekday(dWork) = iDoW Then J = J + 1 iYears(J) = Year(dWork) End If dWork = DateAdd("yyyy", -1, dWork) Wend sTemp = "These are the previous five years in which " sTemp = sTemp & MonthName(Month(dBegin)) & " " & Day(dBegin) sTemp = sTemp & " falls on a " & WeekdayName(iDoW) & ":" sTemp = sTemp & vbCrLf & vbCrLf For J = 5 To 1 Step -1 sTemp = sTemp & iYears(J) & vbCrLf Next J MsgBox sTemp End If End If End Sub
Lorsque la macro trouve les cinq années, elle les affiche dans une boîte de message.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (13529) s’applique à Microsoft Excel 2007, 2010, 2013, 2016, 2019 et Excel dans Office 365.