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