OVH Cloud OVH Cloud

Utilisation controle MScal

5 réponses
Avatar
xb
Bonjour à tous,

Voici mon PB :
J'ai un form avec un champ date que je veux renseigner via un 2e form qui
contient un MScal :
1-Double clic dans champ date du 1er form
2-Ouverture du 2e form avec MSCal
3-Double clic sur la date désirée
4-transfert de cette date dans le champ date du 1er form avec fermeture du
ée form

et ceci en faisant ensorte que le 2e form (MSCal) ne soit pas personnalisé :
qu'il puisse être utilisé pour renseigner n'importe quel champ date de
n'importe quel form.
et pour le moment je suis à chaque fois obligé de créer autant de form MScal
que de champ date à renseigner !!!

Alors ou est l'astuce ??

Merci

5 réponses

Avatar
Raymond [mvp]
Bonsoir.

tu trouveras tout ça sur : http://access.vba.free.fr/calendrier1.htm
lire aussi: http://access.seneque.free.fr/mscal.htm
--
@+
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


"xb" a écrit dans le message de news:
ckrcqv$ob2$
Bonjour à tous,

Voici mon PB :
J'ai un form avec un champ date que je veux renseigner via un 2e form qui
contient un MScal :
1-Double clic dans champ date du 1er form
2-Ouverture du 2e form avec MSCal
3-Double clic sur la date désirée
4-transfert de cette date dans le champ date du 1er form avec fermeture du
ée form

et ceci en faisant ensorte que le 2e form (MSCal) ne soit pas personnalisé
:
qu'il puisse être utilisé pour renseigner n'importe quel champ date de
n'importe quel form.
et pour le moment je suis à chaque fois obligé de créer autant de form
MScal
que de champ date à renseigner !!!

Alors ou est l'astuce ??

Merci





Avatar
Ilan
Bonjour,
l'une des solutions est peut-etre de fournir au formulaire MsCal le nom du
form
et du controle qui l'appelle.
Une fois que l'utilisateur aura choisis la date, tu l'affectes au controle
du formulaire appelant.

Ca donnerait a peu pres ca

Form1
Docmd.OpenForm Form2,,,,,,Screen.ActiveForm.Name & "/" &
Screen.ActiveControl.Name


Form2
Dim FormAppelant as string
Dim ControlAppelant as string

Sub Form_Open (..)
if Not (Isnull(form.OpenArgs) Or Form.OpenArgs="") then
SlashPos=instr(1,Form.OpenArgs,"/")
FormAppelant=left(form.openargs,SlashPos-1)
ControlAppelant=mid(Form.OpenArgs,SlashPos+1,len(Form.OpenArgs)-SlashPos)
endif
End sub

Sub MSCal_AfterUpdate
Forms(FormAppelant).controls(ControleAppelant).Value=MSCal.Value
docmd.Close acForm,Form.Name
End sub


Bonjour à tous,

Voici mon PB :
J'ai un form avec un champ date que je veux renseigner via un 2e form qui
contient un MScal :
1-Double clic dans champ date du 1er form
2-Ouverture du 2e form avec MSCal
3-Double clic sur la date désirée
4-transfert de cette date dans le champ date du 1er form avec fermeture du
ée form

et ceci en faisant ensorte que le 2e form (MSCal) ne soit pas personnalisé :
qu'il puisse être utilisé pour renseigner n'importe quel champ date de
n'importe quel form.
et pour le moment je suis à chaque fois obligé de créer autant de form MScal
que de champ date à renseigner !!!

Alors ou est l'astuce ??

Merci






Avatar
xb
Merci,
Je vais essayer

A+


"xb" a écrit dans le message de news:
ckrcqv$ob2$
Bonjour à tous,

Voici mon PB :
J'ai un form avec un champ date que je veux renseigner via un 2e form qui
contient un MScal :
1-Double clic dans champ date du 1er form
2-Ouverture du 2e form avec MSCal
3-Double clic sur la date désirée
4-transfert de cette date dans le champ date du 1er form avec fermeture du
ée form

et ceci en faisant ensorte que le 2e form (MSCal) ne soit pas personnalisé
:

qu'il puisse être utilisé pour renseigner n'importe quel champ date de
n'importe quel form.
et pour le moment je suis à chaque fois obligé de créer autant de form
MScal

que de champ date à renseigner !!!

Alors ou est l'astuce ??

Merci





Avatar
xb
Bonsoir,
Ta solution marche si le champ date se trouve dans un form.
Mais, si ce champ se trouve dans un sous-Form comme est-il possible de
transmettre le nom du sous form ?
Form: Screen.ActiveForm.Name
SForm:??
Controle : Screen.ActiveControl.Name

A+

"Ilan" a écrit dans le message de news:

Bonjour,
l'une des solutions est peut-etre de fournir au formulaire MsCal le nom du
form
et du controle qui l'appelle.
Une fois que l'utilisateur aura choisis la date, tu l'affectes au controle
du formulaire appelant.

Ca donnerait a peu pres ca

Form1
Docmd.OpenForm Form2,,,,,,Screen.ActiveForm.Name & "/" &
Screen.ActiveControl.Name


Form2
Dim FormAppelant as string
Dim ControlAppelant as string

Sub Form_Open (..)
if Not (Isnull(form.OpenArgs) Or Form.OpenArgs="") then
SlashPos=instr(1,Form.OpenArgs,"/")
FormAppelant=left(form.openargs,SlashPos-1)

ControlAppelant=mid(Form.OpenArgs,SlashPos+1,len(Form.OpenArgs)-SlashPos)

endif
End sub

Sub MSCal_AfterUpdate
Forms(FormAppelant).controls(ControleAppelant).Value=MSCal.Value
docmd.Close acForm,Form.Name
End sub


Bonjour à tous,

Voici mon PB :
J'ai un form avec un champ date que je veux renseigner via un 2e form
qui


contient un MScal :
1-Double clic dans champ date du 1er form
2-Ouverture du 2e form avec MSCal
3-Double clic sur la date désirée
4-transfert de cette date dans le champ date du 1er form avec fermeture
du


ée form

et ceci en faisant ensorte que le 2e form (MSCal) ne soit pas
personnalisé :


qu'il puisse être utilisé pour renseigner n'importe quel champ date de
n'importe quel form.
et pour le moment je suis à chaque fois obligé de créer autant de form
MScal


que de champ date à renseigner !!!

Alors ou est l'astuce ??

Merci








Avatar
Raymond [mvp]
Bonsoir.

Si tu pars dans cette voie, tu obtiendras :
le nom du formulaire principal par : Screen.ActiveForm.Name
le nom du sous-formulaire par : Screen.ActiveControl.Parent.Name
le nom du contrôle actif : Screen.ActiveControl.Name
à condition que le controle sous-formulaire porte bien le même nom que le
sous-formulaire.
mais normalement si tu ouvres le calendrier par un double-click sur le champ
date comme indiqué, tu connais tous ces éléments par leurs noms réels et il
n'y a pas besoin de passer par l'objet Screen.
--
@+
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


"xb" a écrit dans le message de news:
cl3lug$l8s$
Bonsoir,
Ta solution marche si le champ date se trouve dans un form.
Mais, si ce champ se trouve dans un sous-Form comme est-il possible de
transmettre le nom du sous form ?
Form: Screen.ActiveForm.Name
SForm:??
Controle : Screen.ActiveControl.Name

A+