Lorsque vous développez une feuille de calcul pour suivre les informations commerciales, vous devrez peut-être déterminer tous les vendredis dans une plage de dates. La meilleure façon de procéder dépend des données de votre feuille de calcul et de la manière dont vous souhaitez afficher les résultats.

Si vous avez une liste de dates dans une colonne, vous pouvez utiliser plusieurs fonctions de feuille de calcul différentes pour déterminer si ces dates sont des vendredis ou non.

La fonction WEEKDAY renvoie un nombre, de 1 à 7, selon le jour de la semaine de la date utilisée comme argument:

=WEEKDAY(A2)

Cette utilisation renvoie le nombre 6 si la date en A2 est un vendredi. Si cette formule est copiée vers le bas à côté d’une colonne de dates, vous pouvez alors utiliser la fonctionnalité de filtre automatique d’Excel pour afficher uniquement les dates où le jour de la semaine est 6 (vendredi).

Vous pouvez également utiliser la fonctionnalité de mise en forme conditionnelle d’Excel pour simplement mettre en évidence tous les vendredis dans une liste de dates. Suivez ces étapes:

  1. Sélectionnez la liste des dates.

  2. Assurez-vous que l’onglet Accueil du ruban est affiché.

  3. Cliquez sur l’outil Mise en forme conditionnelle dans le groupe Styles. Excel affiche une série de choix.

  4. Cliquez sur Nouvelle règle. Excel affiche la boîte de dialogue Nouvelle règle de mise en forme.

(Voir la figure 1.)

  1. Dans la zone Sélectionner un type de règle en haut de la boîte de dialogue, choisissez Utiliser une formule pour déterminer les cellules à mettre en forme. (Voir la figure 2.)

  2. Dans la zone de formule, entrez la formule suivante, en remplaçant A2 par l’adresse de la cellule active sélectionnée à l’étape 1: = WEEKDAY (A2) = 6. Cliquez sur Format pour afficher la boîte de dialogue Format des cellules.

  3. Définissez les options de formatage pour mettre en évidence les vendredis comme vous le souhaitez.

  4. Cliquez sur OK pour fermer la boîte de dialogue Format de cellule.

  5. Cliquez sur OK.

Si vous souhaitez déterminer une série de vendredis en fonction d’une date de début et de fin, vous pouvez configurer une série de formules pour les comprendre.

En supposant que la date de début est en A2 et que la date de fin est en A3, vous pouvez utiliser la formule suivante pour déterminer la date du premier vendredi:

=IF(A2+IF(WEEKDAY(A2)<=6,6-WEEKDAY(A2),6)>A3, "",A2+IF(WEEKDAY(A2)<=6,6-WEEKDAY(A2),6))

Si vous placez cette formule dans la cellule C2 et que vous la formatez sous forme de date, vous pouvez utiliser la formule suivante pour déterminer le vendredi suivant dans la plage:

=IF(C2="","",IF(C2+7>$A$3,"",C2+7))

Si vous copiez cette formule pour un tas de cellules, vous vous retrouvez avec une liste de vendredis entre n’importe quelle plage de dates spécifiée par A2 et A3.

Si vous voulez réellement « extraire » les vendredis dans une plage de dates spécifique, vous devrez utiliser une macro. Il existe plusieurs façons de procéder. Cette macro simple examinera toutes les dates dans la plage A2: A24.

S’il s’agit de vendredis, la date est copiée dans la colonne C, à partir de C2. Le résultat, bien sûr, est que la liste commençant à C2 ne contiendra que des dates qui sont des vendredis.

Sub PullFridays1()

Dim dat As Range     Dim c As Range     Dim rw As Integer

Set dat = ActiveSheet.Range("A2:A24")

rw = 2     For Each c In dat         If Weekday(c) = vbFriday Then             Cells(rw, 3).Value = Format(c)

rw = rw + 1         End If     Next End Sub

Si vous le souhaitez, vous pouvez modifier la plage examinée par la macro simplement en modifiant la référence A2: A24, et vous pouvez modifier l’emplacement d’écriture des dates en modifiant la valeur de rw (la ligne) et la valeur 3 (la colonne) dans le Fonction des cellules.

Si vous préférez travailler avec une date de début et une date de fin, vous pouvez modifier la macro afin qu’elle passe par les dates. La macro suivante suppose que la date de début est dans la cellule A2 et la date de fin est dans la cellule A3.

Sub PullFridays2()

Dim dStart As Date     Dim dEnd As Date     Dim rw As Integer

dStart = Range("A2").Value     dEnd = Range("A3").Value

rw = 2     While dStart < dEnd         If Weekday(dStart) = vbFriday Then             Cells(rw, 3).Value = dStart             Cells(rw, 3).NumberFormat = "m/d/yyyy"

rw = rw + 1         End If         dStart = dStart + 1     Wend End Sub

La macro extrait toujours les vendredis de la plage et les place dans une liste commençant à C2.

Une autre approche macro consiste à créer une fonction définie par l’utilisateur qui renvoie des vendredis spécifiques dans une plage. Ce qui suit fait exactement cela:

Function PullFridays3(dStartDate As Date, _                       dEndDate As Date, _                       iIndex As Integer)

Dim iMaxDays As Integer     Dim dFirstday As Date

Application.Volatile     If dStartDate > dEndDate Then         PullFridays3 = CVErr(xlErrNum)

Exit Function     End If

dFirstday = vbFriday - Weekday(dStartDate) + dStartDate     If dFirstday < dStartDate Then dFirstday = dFirstday + 7     iMaxDays = Int((dEndDate - dFirstday) / 7) + 1

PullFridays3 = ""

If iIndex = 0 Then         PullFridays3 = iMaxDays     ElseIf iIndex <= iMaxDays Then         PullFridays3 = dFirstday + (iIndex - 1) * 7     End If End Function

Vous utilisez cette fonction dans une cellule de votre feuille de calcul de la manière suivante:

=PULLFRIDAYS3(A2,A3,1)

Le premier argument de la fonction est la date de début et le second est la date de fin. Le troisième argument indique le vendredi que vous souhaitez renvoyer dans la plage spécifiée. Si vous utilisez 1, vous obtenez le premier vendredi, 2 renvoie le deuxième vendredi, etc. Si vous utilisez un 0 pour le troisième argument, la fonction renvoie le nombre de vendredis dans la plage spécifiée. Si la date de début spécifiée est supérieure à la date de fin, la fonction renvoie une erreur #NUM.

_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 (8147) 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:

lien: / excel-Pulling_All_Fridays [Tirant tous les vendredis].