OVH Cloud OVH Cloud

Pb de syntaxte pour afficher une valeur dans un sous-formulaire

11 réponses
Avatar
Pierre REIT
Bonjour à tous,

J'ai un formulaire F contenant un sous-formulaire SF.

Dans le sous-formulaire j'essaye de récupérer la date issue d'un calendrier
(source ici http://officesystem.access.free.fr/ex_calendrier1.htm.)

Quand je sélectionne une date sur le calendrier en ouvrant le
sous-formulaire SF ça fonctionne bien, quand je sélectionne la date à partir
du formulaire F ça ne fonctionne pas, rien ne s'affiche.
Je pense que j'ai un problème de syntaxte dans le code ci-dessous pour
indiquer que la date doit arriver dans le champ date du sous-formulaire SF :

Private Sub Calendar0_Click()
Dim frm As String
Dim ctl As String
On Error GoTo Err_Args
frm = Mid(Me.Caption, 1, InStr(1, Me.Caption, "!") - 1)
ctl = Mid(Me.Caption, InStr(1, Me.Caption, "!") + 1)
If IsNull(frm) Or frm = "" Or IsNull(ctl) Or ctl = "" Then GoTo Err_Args
Forms(frm)(ctl) = Me.Calendar0
Err_Args:
End Sub

Merci pour votre aide.
PierreR (Débutant, en progrès mais peu mieux faire)

1 réponse

1 2
Avatar
Jacques
Bonjour Eric,

Toutes mes excuses pour ne pas d'avoir remercié plus tôt pour ton
code qui fonctionne correctement.

Seulement comme j'ai plusieurs champs dates à renseigner je voudrais
savoir si l'on peut faire une fonction, pour ne pas mettre le code à
chaque contrôle, et comment le faire ?

Pa railleur sur un champ je voudrais mettre le mois et l'année
seulement « nov-2006 » est-ce possible ?

Merci pour ton aide.

Salutations



Bonjour Jacques,

(A améliorer)

Soit un formulaire Form1 contenant un sous-formulaire Form2 et un
formulaire calendrier avec un controle nommé Calendar0.
Pour pouvoir utiliser le calendrier aussi bien avec le formulaire Form1
incluant le sous-form Form2 et avec Form2 utilisé seul, le code pourrait
être le suivant:

1-Sur l'évènement Double-clic du champ de type Date présent (ici
DateFacture) dans form2 (mis en sous-formulaire ou autonome):

Private Sub DateFacture_DblClick(Cancel As Integer)
On Error GoTo Err_Calendrier ' gestion d'erreur simplifiée
DoCmd.OpenForm "calendrier"
Forms("calendrier").Caption = Me.Parent.Name & _
"!" & Me.Name & "!" & Me.DateFacture.Name
Exit Sub
Err_Calendrier:
If Err.Number = 2452 Then
Forms("calendrier").Caption = Me.Name & _
"!" & Me.DateFacture.Name
Else
Forms("calendrier").Caption = Me.Parent.Name & _
"!" & Me.Name & "!" & Me.DateFacture.Name
End If
Resume Next
End Sub

2-Sur l'évènement clic du contrôle Calendar0 du formulaire Calendri er:

Private Sub Calendar0_Click()
Dim frm As String, frmPere As String
Dim ctl As String
Dim sep1 As Integer, sep2 As Integer
sep1 = InStr(1, Me.Caption, "!")
sep2 = InStrRev(Me.Caption, "!")
If sep1 <> sep2 Then
frmPere = Mid(Me.Caption, 1, sep1 - 1)
frm = Mid(Me.Caption, sep1 + 1, sep2 - sep1 - 1)
ctl = Mid(Me.Caption, sep2 + 1)
Forms(frmPere)(frm)(ctl) = Me.Calendar0
Else
frm = Mid(Me.Caption, 1, sep1 - 1)
ctl = Mid(Me.Caption, sep1 + 1)
Forms(frm)(ctl) = Me.Calendar0
End If
DoCmd.Close
End Sub


(PS: En partant du principe que Form2 ne contient pas, à son tour, un
sous-formulaire avec un champ de type Date)

Bonsoir,

Je me permet d'utiliser ce fil pour poser une question,

Comment faire pour grouper les deux procédures ( l'une avec un
formulaire seulement, et l'autre avec un formulaire et un sous
formulaire) afin de ne pas utiliser deux calendriers lorsqu'on à les
deux cas dans son application.

Salutations




Genial !
Merci beaucoup
PierreR



Bonjour Pierre,

Sur l'évènement Chargement du formulaire calendrier:
Private Sub Form_Load()
Me.Calendar0.Value = Date
End Sub


Bonjour Eric
Maintenant, ca fonctionne bien.
Merci pour les compélements d'information.
En fait, un retour chariot malencontreux s'était inséré dans to n code et
faisait une erreur sur la ligne If IsNull(frm)...
Par ailleurs saurait tu faire en sorte qu'à l'affichage, le calendr ier
affiche la date du jour ? J'ai cherché, mais je n'ai pas trouvé. Il faut dire
que la logique d'Access ne m'est vraiment pas familière.
Merci encore.
PierreR



--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl =fr







--
A+
Eric
http://www.mpfa.info/
Archives : http://groups.google.fr/group/microsoft.public.fr.access?hl= fr






1 2