Bonsoir,
Débutant? OK :
Formulaire en mode création
Menu—>Insertion—>Contrôle ActiveX—>Option Contrôle Calendrier
Le calendrier est inscrit sur le formulaire? Oui? On l'a baptisé—>Cal
On continue :
....Click droit—>Propriétée ou Objet calendrier/Propriétés :
....Value —> Donne la date actuellement sélectionnée
....Day—> Jour du mois actuellement sélectionné = Day(Cal.Value)
....Month —> Mois actuellement sélectionné = Month(cal.Value)
....Year —> Année actuellement sélectionnée = Year(cal.Value)
.............Méthodes :
..Today—> Positionne sur date du jour. (cal.Today = cal.Value=Date()
..PreviousDay —> = 1 jour en arrière
..NextDay —> = 1 jour en avant
..PreviousMonth —> = 1 mois en arrière
..NextMonth—> = 1 mois en avant
..PreviousYear—> = 1 an en arrière
..NextYear—> = 1 an en avant
............Evénements :
..Refresh—> Mise à jour
..AfterUpdate—> Se produit après que la date soit changée
..BeforeUpdate Se produit avant que la date soit changée (Rend possible annuler opération)
..NewMonth—> Se produit lorsque le mois est changé
..NewYear—> Se produit lorsque l'année est changée
A partir de ces données on va créer quelques boutons sur notre formulaire :
On vient de désactiver Assistants de contrôle (Baguette magique)
dans la barre de menus—> Mise en Forme formulaires
Un bouton pour la date de ce jour placé en dessous de Jeudi(Milieu de cal) :
1 2 3 4
| Private Sub cmd_Aujourdhui_Click()
Me.cal.Today
Me.cal.Refresh
End Sub |
Légende :I
Et de part et d'autre suivant logique :
1 2 3 4
| Private Sub cmd_JourPrecedent_Click()
Me.cal.PreviousDay
Me.cal.Refresh
End Sub |
Légende :<<
1 2 3 4
| Private Sub cmd_JourSuivant_Click()
Me.cal.NextDay
Me.cal.Refresh
End Sub |
Légende :>>
Pour la suite Mois, An….
*************************************
On va actualiser tout ça à l'ouverture du formulaire :
1 2 3
| Private Sub Form_Open(Cancel As Integer)
cal_AfterUpdate
End Sub |
On continue.
Sur ce formulaire 4 champs sans sources —>txtDate—>txtJour—>txtMois—>txtAn
Et dans le module de ce formulaire :
1 2 3 4 5 6 7 8
| Private Sub cal_AfterUpdate()
With Me.cal
Me.txtDate = .Value
Me.txtJour = .Day
Me.txtMois = .Month
Me.txtAnnée = .Year
End With
End Sub |
*******************************************************
C'est déjà pas mal. On désire aller plus loin?
Renseigner n'importe quel champ à l'aide de ce calendrier? OK :
En haut du module de ce formulaire(Partie déclaration) :
Private frmDemandeDate As Form
On reprend à l'ouverture du formulaire :
1 2 3 4 5
| Private Sub Form_Open(Cancel As Integer)
cal_AfterUpdate
On Error Resume Next
Set frmDemandeDate = Screen.ActiveForm
End Sub |
à la fermeture du formulaire :
1 2 3 4 5
| Private Sub Form_Close()
On Error Resume Next
frmDemandeDate.ActiveControl = Me.cal.Value
SetfrmDemandeDate = nothing
End Sub |
Et on ferme en enregistrant.
*************************************
Dans un formulaire on crée un champ —>txtChampDate
A côté un bouton—>cmdCalendrier avec pour code :
1 2 3 4
| Private Sub cmdCalendrier_Click()
Me.txtChampDate.SetFocus
DoCmd.OpenForm "frm_Calendrier"
End Sub |
Cet événement peut se produire sur double click d'un champ, etc.
Cordialement.
Partager