Option Explicit
Sub CompterNbJoursSemaine()
Dim ws As Worksheet
Dim DerniereLigne As Long
Dim i As Long
Dim Jours(1 To 7) As Long 'Tableau pour compter les jours de la semaine
Dim Jour As String
Dim Msg As String
Set ws = ThisWorkbook.Sheets("Feuil1") ' Modifier le nom de la feuille si nécessaire
DerniereLigne = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row ' Trouver la dernière ligne de la colonne A
' Initialiser le tableau
For i = 1 To 7
Jours(i) = 0
Next i
' Compter les jours
For i = 4 To DerniereLigne
If IsDate(ws.Cells(i, 1).Value) Then
Jour = Weekday(ws.Cells(i, 1).Value, vbMonday) ' Utilise vbMonday pour que la semaine commence le Lundi
Jours(Jour) = Jours(Jour) + 1
End If
Next i
' Construire le message
Msg = "Nombre de jours de la semaine :" & vbCrLf
Msg = Msg & "Lundi: " & Jours(1) & vbCrLf
Msg = Msg & "Mardi: " & Jours(2) & vbCrLf
Msg = Msg & "Mercredi: " & Jours(3) & vbCrLf
Msg = Msg & "Jeudi: " & Jours(4) & vbCrLf
Msg = Msg & "Vendredi: " & Jours(5) & vbCrLf
Msg = Msg & "Samedi: " & Jours(6) & vbCrLf
Msg = Msg & "Dimanche: " & Jours(7) & vbCrLf
' Afficher le message
MsgBox Msg
' Écrire les résultats sur la feuille
ws.Cells(1, 3).Value = "Jour"
ws.Cells(1, 4).Value = "Nombre"
For i = 1 To 7
ws.Cells(i + 1, 3).Value = Choose(i, "Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche")
ws.Cells(i + 1, 4).Value = Jours(i)
Next i
End Sub