OVH Cloud OVH Cloud

Problème de syntaxe

15 réponses
Avatar
Antoine Labusquière
Bonjour à tous.

Je voudrais utiliser un contrôle calendrier, utilisable de n'importe où dans
mon appli.

J'ai donc créé un formulaire avec mon calendrier, formulaire que j'ouvre
lorsqu'on double clique sur un champ date de mes formulaires.

Je n'arrive pas à trouver la syntaxe pour, lorsqu'on clique sur le bouton OK
du calendrier, lui dire d'aller renseigner le champ d'où je vient, quel que
ce soit ce champ

Suis-je clair ???


Ex:
'Code d'un des formulaires
Private Sub txt_date_DblClick(Cancel As Integer)

Docmd.openform "F_CALENDRIER"

End Sub

'Code du bouton OK du formulaire calendrier
Private Sub cmd_ok_Click()

'Forms![F_CALENDRIER].Controls![txt_date] = ctl_calendrier.Value
>>> Ca, ça marche, mais je mets le nom du formulaire et du contrôle en dur
dans le code

End Sub

Private Sub cmd_ok_Click()

Form_Cal = Me.Name
Controle_Cal = "txt_date"

Forms![form_cal].controls![controle_cal]=ctl_calendrier
>>> Ca ne marche pas. En l'occurence, il cherche le formulaire nommé
"form_cal"
Forms![form_cal].controls![controle_cal]=ctl_calendrier
>>> Erreur de compilation: "Le caractère de déclaration de type ne
correspond pas au type de données déclaré"

End Sub

5 réponses

1 2
Avatar
Raymond [mvp]
je plaisantais.

la solution de Pierre me parait bonne. tu peux également transmettre les
noms du formulaire et du contrôle par le openArgs ce qui pourrait rendre le
calendrier un peu plus indépendant.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Antoine Labusquière" a écrit dans le message de
news:c971cg$pni$
Si si, je l'ai dit dans le premier post :)



Avatar
Antoine Labusquière
Qu'est-ce à dire le OpenArgs ?
Je supposait faire quelque chose comme ça, mais c'est justement sur ce point
que la syntaxe pêche de mon côté.



"Raymond [mvp]" a écrit dans le message de
news:
je plaisantais.

la solution de Pierre me parait bonne. tu peux également transmettre les
noms du formulaire et du contrôle par le openArgs ce qui pourrait rendre
le

calendrier un peu plus indépendant.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Antoine Labusquière" a écrit dans le message de
news:c971cg$pni$
Si si, je l'ai dit dans le premier post :)







Avatar
Antoine Labusquière
Merci à tous, la solution de Pierre est la bonne.
Je me suis emmelé les pinceaux entre les "!" et les ".".
En fait, il suffit de ne pas en mettre, c'est plus simple :)

Bonne journée
"Raymond [mvp]" a écrit dans le message de
news:
je plaisantais.

la solution de Pierre me parait bonne. tu peux également transmettre les
noms du formulaire et du contrôle par le openArgs ce qui pourrait rendre
le

calendrier un peu plus indépendant.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Antoine Labusquière" a écrit dans le message de
news:c971cg$pni$
Si si, je l'ai dit dans le premier post :)







Avatar
Raymond [mvp]
dans le formulaire appelant:

Private Sub Madate_DblClick(Cancel As Integer)
DoCmd.OpenForm "calendrier", , , , , , Me.Name & " ;" &
Screen.ActiveControl.Name
End Sub

dans le formulaire calendrier:
Dim frm As String
Dim ctl As String
Private Sub Form_Load()
frm = Mid(OpenArgs, 1, InStr(1, OpenArgs, ";") - 1)
ctl = Mid(OpenArgs, InStr(1, OpenArgs, ";") + 1)
End Sub

ensuite tu te sers de frm et ctl dans la fonction Forms ......

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Antoine Labusquière" a écrit dans le message de
news:c972c2$rb8$
Qu'est-ce à dire le OpenArgs ?
Je supposait faire quelque chose comme ça, mais c'est justement sur ce
point

que la syntaxe pêche de mon côté.




Avatar
Raymond [mvp]
Juste pour le plaisir:
le calendrier étant dans un formulaire séparé, mettre ce formulaire en
fenêtre indépendante.
appeler le calendrier de cette façon:

Private Sub Madate_DblClick(Cancel As Integer)
DoCmd.OpenForm "calendrier"
Forms("calendrier").Caption = Me.Name & "!" & Me.Madate.Name
End Sub

mettre ceci dans le code du calendrier:
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

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Antoine Labusquière" a écrit dans le message de
news:c972ng$ij0$
Merci à tous, la solution de Pierre est la bonne.
Je me suis emmelé les pinceaux entre les "!" et les ".".
En fait, il suffit de ne pas en mettre, c'est plus simple :)

Bonne journée


1 2