Code total pour un "datechooser" lisant/écrivant la valeur du contrôle cible.
À partir de l'article Access : Modules de classes de Michel Blavin
Formulaire calendrier:
Définir un contrôle calendrier et des boutons Ok et Annuler. On peut définir les propriétés "Fen indépendante" et "Fen modale" à Oui pour obtenir une fenêtre de type popup.
Le contrôle (MSCAL.Calendar.7) que j'ai trouvé n'a pas d'évènement onDlbClick (d'ou le bouton OK obligatoire)
Module de frmCalendrier:
Formulaires ayant des dates:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
34
35
36
37
38
39 Option Explicit Private m_prpCtlCible As Control Private Sub Form_Load() Me.ctlCalendrier.Value = Now End Sub Property Set Cible(ctl As Control) Set m_prpCtlCible = ctl If (Not IsNull(m_prpCtlCible.Value)) Then _ Me.ctlCalendrier.Value = CDate(m_prpCtlCible.Value) End Property Private Sub cmdAnnuler_Click() DoCmd.Close End Sub Private Sub cmdOK_Click() On Error GoTo ErrManager 'Affecter la date choisie au contrôle cible m_prpCtlCible.Value = Me.ctlCalendrier.Value Sortie: DoCmd.Close Exit Sub ' Gestionnaire d'erreurs ErrManager: Select Case Err.Number Case 91 MsgBox "Pas de contrôle cible!" Case Else MsgBox "L'erreur suivante s'est produite : " & vbCrLf & Err.Description, vbCritical, _ "Erreur N° " & Err.Number End Select Resume Sortie End Sub
-Définir un champ de texte et un bouton.
Sur click (du bouton) = "= btCalendrier_Click([txtDate])"
txtDate est le nom du contrôle où frmCalendrier écrit la date choisie.
Module standard :
Définir la fonction btCalendrier_Click dans un module standard pour qu'elle soit accessible pour n'importe quel formulaire ayant des dates. Il faut définir une function et non pas un Sub car on ne peut pas assigner un Sub à un évènement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 'Ouvre le formulaire calendrier Public Function btCalendrier_Click(txtCible As Control) DoCmd.OpenForm "frmCalendrier" Set Form_frmCalendrier.Cible = txtCible End Function







Répondre avec citation
Partager