Bonjour,
En premier lieu et pour éviter les erreurs dans le choix du jour, il est important que ceux-ci correspondent au mois choisi donc, ne pas remplir la ComboBox2 de 1 à 31 car si le choix est février et le jour 30 où va tu trouver cette date ?
Alors, voici un code à mettre dans l'événement Click() du ComboBox1 ainsi que l'événement "Initialize()" de la form pour être sûr de la bonne correspondance des mois (espaces parasites dans la plage) :
Private Sub UserForm_Initialize()
Dim I As Integer
ComboBox1.RowSource = ""
'rempli par code pour être sûr de la bonne orthographe (sans espace parasite comme c'est le cas dans la plage !)
For I = 1 To 12: ComboBox1.AddItem UCase(MonthName(I)): Next I
End Sub
Private Sub ComboBox1_Click()
Dim I As Integer
Dim J As Integer
Select Case ComboBox1.Text
Case "JANVIER", "MARS", "MAI", "JUILLET", "AOUT", "OCTOBRE", "DECEMBRE": J = 31
Case "FEVRIER": J = IIf(Year(Date) Mod 400 = 0 Or (Year(Date) Mod 4 = 0 And Year(Date) Mod 100 <> 0), 29, 28)
Case Else: J = 30
End Select
ComboBox2.RowSource = "" 'pour éviter l'interdiction
For I = 1 To J: ComboBox2.AddItem I: Next I
End Sub
Je regarde pour ce qui est du report !