Piloter le calendrier MSCal par des boutons
Le calendrier ActiveX MSCal (ou Microsoft Calendar) dispose de listes déroulantes pour sélectionner le mois et l’année. Mais comment se déplacer dans ce calendrier à l’aide de boutons personnalisés ?
Mise en place
- Je dispose d’un formulaire sur lequel un calendrier MSCal a été placé (voir l’article Calendrier MSCal pour plus de détails). Ce calendrier est nommé
cal
dans ce qui suit. - J’ai ajouté 4 boutons sur le formulaire, nommés dans l’ordre :
btnMoisPrecedent
,btnJourPrecedent
,btnJourSuivant
etbtnMoisSuivant
. Le rôle des boutons devrait parler de lui-même !
Un peu de code
Si vos boutons portent les mêmes noms que les miens, vous pouvez directement recopier ce qui suit dans le module de votre formulaire (pas dans un module standard) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
' --- ' JOUR PRECEDENT ' --- Private Sub btnJourPrecedent_Click() Me.cal.Value = Me.cal.Value - 1 End Sub ' --- ' JOUR SUIVANT ' --- Private Sub btnJourSuivant_Click() Me.cal.Value = Me.cal.Value + 1 End Sub ' --- ' MOIS PRECEDENT ' --- Private Sub btnMoisPrecedent_Click() Dim dt As Date dt = DateAdd("m", -1, Me.cal.Value) Me.cal.Value = dt - Day(dt) + 1 End Sub ' --- ' MOIS SUIVANT ' --- Private Sub btnMoisSuivant_Click() Dim dt As Date dt = DateAdd("m", 1, Me.cal.Value) Me.cal.Value = dt - Day(dt) + 1 End Sub |
Quelques explications
- Les 2 premiers boutons sont assez simples : on remplace la date du calendrier (
cal.Value
) par le jour précédent (cal.Value - 1
) ou le jour suivant (cal.Value + 1
). - Pour ce qui est des déplacements par mois, on ajoute/retranche un mois à l’aide de la fonction
DateAdd()
. Dans mon cas, j’ai choisi de repositionner le calendrier au 1 du mois précédent ou suivant. Si vous souhaitez conserver le jour de départ, enlevez les- Day(dt) + 1
.