Astuce VBA : jour de la semaine d'une date

Pour déterminer le jour de la semaine d'une date (de 1 à 7) ou l'afficher sous forme textuelle (Lundi-Dimanche, LUN-DIM, L-D, etc.), il existe plusieurs possibilités.

Pour obtenir le numéro de jour de la semaine d'une date (de 1 à 7), utilisez simplement la fonction Weekday :

Sub jour_semaine()
   
    date_test = CDate("28/4/2018") 'Une date d'exemple

    MsgBox Weekday(date_test, 2) 'Renvoie : 6
   
End Sub

Le chiffre 2 passé en second argument de Weekday(date_test, 2) permet de définir le premier jour de la semaine (le numéro 1) comme étant le lundi (notez que si vous n'ajoutez pas cette valeur, Excel considérera que le jour numéro 1 est le dimanche).

Il est également possible d'utiliser la fonction Format pour obtenir le jour de la semaine :

Sub jour_semaine()
   
    date_test = CDate("28/4/2018") 'Une date d'exemple

    MsgBox Format(date_test, "w", 2) 'Renvoie : 6
   
End Sub

Afficher le jour de la semaine sous forme de texte

Voici quelques exemples permettant d'afficher le jour de la semaine sous différents formats (Lundi-Dimanche, LU-DI, etc.) :

Sub jour_semaine()
   
    date_test = CDate("28/4/2018") 'Une date d'exemple
   
    'Format : lundi - dimanche
    MsgBox Format(date_test, "dddd") 'Renvoie : samedi
   
    'Format : Lundi - Dimanche
    MsgBox WorksheetFunction.Proper(Format(date_test, "dddd"))  'Renvoie : Samedi
   
    'Format : LUNDI - DIMANCHE
    MsgBox UCase(Format(date_test, "dddd")) 'Renvoie : SAMEDI
   
    'Format : LUN - DIM
    MsgBox Left(UCase(Format(date_test, "dddd")), 3) 'Renvoie : SAM
   
    'Format : LU - DI
    MsgBox Left(UCase(Format(date_test, "dddd")), 2) 'Renvoie : SA
   
    'Format : L - D
    MsgBox Left(UCase(Format(date_test, "dddd")), 1) 'Renvoie : S
   
    'Format personnalisé (remplacez les valeurs "jour?" par les valeurs de votre choix)
    MsgBox Array("jour1", "jour2", "jour3", "jour4", "jour5", "jour6", "jour7")(Weekday(date_test, 2) - 1) 'Renvoie : jour6
   
End Sub