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 jourSemaine()
dateTest = CDate("27/4/2024") 'Une date d'exemple
MsgBox Weekday(dateTest, 2) 'Renvoie : 6
End Sub
Le chiffre 2 passé en second argument de Weekday(dateTest, 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 jourSemaine()
dateTest = CDate("27/4/2024") 'Une date d'exemple
MsgBox Format(dateTest, "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 jourSemaine()
dateTest = CDate("27/4/2024") 'Une date d'exemple
'Format : lundi - dimanche
MsgBox Format(dateTest, "dddd") 'Renvoie : samedi
'Format : Lundi - Dimanche
MsgBox WorksheetFunction.Proper(Format(dateTest, "dddd")) 'Renvoie : Samedi
'Format : LUNDI - DIMANCHE
MsgBox UCase(Format(dateTest, "dddd")) 'Renvoie : SAMEDI
'Format : LUN - DIM
MsgBox Left(UCase(Format(dateTest, "dddd")), 3) 'Renvoie : SAM
'Format : LU - DI
MsgBox Left(UCase(Format(dateTest, "dddd")), 2) 'Renvoie : SA
'Format : L - D
MsgBox Left(UCase(Format(dateTest, "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(dateTest, 2) - 1) 'Renvoie : jour6
End Sub