Calculer une date de début de la semaine en utilisant VBA dans Microsoft Excel
Dans cet article, nous allons créer une fonction définie par l’utilisateur (UDF) ou une fonction personnalisée pour trouver la première date d’une semaine donnée, en considérant le lundi comme le premier jour de la semaine. Nous allons créer une fonction personnalisée qui renverra la première date de la semaine après le nombre de semaines spécifié de l’année, du mois ou de la date donnée.
Dans cet article, les données brutes se composent du numéro de semaine, du jour, du mois et de l’année.
La fonction personnalisée aura le jour, le mois, l’année et le numéro de semaine comme paramètres d’entrée. Sur la base de ces valeurs d’entrée, la fonction retournera le premier jour de la semaine.
La syntaxe de la fonction personnalisée «WeekStartDate» est WeekStartDate (WeekNumber, Year, Month, Day)
Le mois et le jour sont des paramètres facultatifs.
Cette fonction suppose le lundi comme premier jour de la semaine.
La fonction WeekStartDate renvoie le premier jour de la semaine après le nombre de semaines spécifié à partir de la date spécifiée par le paramètre Day, Month et Year. Si le paramètre Day n’est pas spécifié, il renverra le premier jour de la semaine après le nombre de semaines spécifié dans le mois spécifié par le paramètre Month de l’année spécifiée. Si les paramètres Month et Day ne sont pas spécifiés, il renverra le premier jour de la semaine spécifiée de l’année.
Explication logique
Nous avons créé la fonction personnalisée «WeekStartDate» pour trouver le premier jour de la semaine. La logique utilisée pour cette fonction est que si le jour de la semaine de la date donnée est inférieur à 4, la semaine en cours sera considérée comme la première semaine. Sinon, si le jour de la semaine de la date donnée est supérieur à 4, la semaine suivante sera considérée comme la première semaine.
Explication du code
DateSerial (intYear, intMonth, intDay)
La fonction DateSerial est utilisée pour obtenir la date à partir de la valeur du jour, du mois et de l’année.
Jour de la semaine (FromDate, vbMonday)
La fonction Jour de la semaine est utilisée pour obtenir le jour de la semaine pour la date, en considérant le lundi comme le premier jour de la semaine.
Si WKDay> 4 Then WDays = (7 intWeek) – WKDay + 1 Else WDays = (7 (intWeek – 1)) – WKDay + 1 End If Above code est utilisé pour trouver le nombre de jours à inclure pour trouver la première date de la semaine. Si la valeur du jour de la semaine est inférieure à 4, la semaine en cours est considérée comme la première semaine. C’est pourquoi nous avons soustrait 1, c’est-à-dire
(intWeek – 1). 1 est ajouté car nous voulons trouver le premier jour de la semaine.
Veuillez suivre ci-dessous pour le code
Option Explicit Function WeekStartDate(intWeek As Integer, intYear As Integer, Optional intMonth As Integer = 1, Optional intDay As Integer = 1) 'Declaring variables Dim FromDate As Date, lngAdd As Long Dim WKDay, WDays As Integer WDays = 0 'Checking that year should not have negative value If intYear < 1 Then WeekStartDate = "Year cann't have negative value" Exit Function End If 'Calculating the date FromDate = DateSerial(intYear, intMonth, intDay) 'Getting the week day of the specified date considering monday as first day WKDay = Weekday(FromDate, vbMonday) 'If value of week day is less than 4 then subtracting 1 from the week number If WKDay > 4 Then WDays = (7 * intWeek) - WKDay + 1 Else WDays = (7 * (intWeek - 1)) - WKDay + 1 End If 'Return the first day of the week WeekStartDate = FromDate + WDays End Function
Si vous avez aimé ce blog, partagez-le avec vos amis sur Facebook et Facebook.
Nous serions ravis de vous entendre, faites-nous savoir comment nous pouvons améliorer notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]