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.

ArrowRawData

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.

ArrowOutput

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]