Comment trouver par VBA une date à partir de l'année, le numéro de la semaine et le nom du jour de semaine ?

Avez-vous déjà posé la question suivante : En connaissant l'année, le numéro de la semaine (1, 2, ...) et le nom du jour de semaine (lundi, mardi, ...), quelle est la date précise du jour en question ? C'est à cette question que l'exemple ci-dessous répond.

Sans tarder, voici la fenêtre du fichier Excel présentant l'interface répondant à cette question :

Find Day Date

La fonction VBA constituant la clé pour répondre à cette question est comme suit :

Private Function FindDayDateOfWeek(ByVal iweekday As Integer, ByVal WeekNo As Integer, ByVal TheYear As String) As Date
    Dim TempDate As Date
    TempDate = CDate("01/01/" & TheYear) - Weekday("01/01/" & TheYear, vbSunday) + iweekday + 1
    TempDate = TempDate + 7 * (WeekNo - 1)
    
    FindDayDateOfWeek = TempDate
End Function

L'idée principale de cette macro est d'utiliser la fonction VBA Weekday qui renvoie le numéro de la semaine (1, 2, ..., 7) correspondant à (Dimanche, Lundi, ..., Samedi). Le reste est constitué d'opérations arithmétiques. Vous pouvez consulter l'aide de EXCEL à propos de cette fonction pour avoir plus de détails.

Dans le domaine des entreprises et des formations gouvernementales on utilise plutôt le système basé sur les semaines comme par exemple, la réunion du cabinet du 1er ministre est une instance hebdo qui a lieu tous les mercredis à 9h, le comité de direction de l'entreprise a lieu toutes les semaines paires le vendredi à 9h30. Dans toutes ces situations, on peut tout-à-fait se passer de l'information indiquant la date du jour. En revanche la plupart des calendriers intégrés dans les outils utilisés en entreprise ou en privé se basent sur un système basé sur des dates de jours et la semaine est affichée à titre d'information.

NOTE 1 : Au lancement du fichier Excel l'interface de l'application EXCEL est non visible. Pour modifier ce comportement vous devez accéder au code VBA et pour cela, il ne faut pas activer les macros au lancement et appuyer sur la touche combinée : Alt+F11.

NOTE 2 : On sait qu'une année comporte entre 52 et 53 semaines bien que la règle d'usage soit plutôt 52 semaines. La raison est que la dernière semaine appelée des fois semaine intercalaire non complète de l'année (53) en cours se chevauche avec la 1ère semaine de l'année suivante dont les 1ers jours sont plutôt comptés dans la 1ère semaine de l'année qui suit. Si vous voulez enrichir vos connaissance sur le sujet de cet article, le lien suivant fournit plus d'information sur le système de numérotation ISO des semaines.

Fichier Excel avec macros

Fichier Excel en version compatible 97/2003