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