Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Passer la valeur d'un control en paramètre

4 réponses
Avatar
SweetEd
Bonjour,

Je voudrais sélectionner une date en ouvrant un formulaire contenant un
calendrier, ceci à partir d'un formulaire contenant un control onglet.

Jusque là c bon mais pour retourner la date dans le formulaire appelant,
j'obtiens une erreure "2465" disant que le champ transferré n'existe pas.
J'ai bien entendu, vérifié l'orthographe du champ, comme de mon formulaire
appellant.

Ce code est adapté d'un livre présentant des exemples de bases access 2003:


Private Sub Retourner_Click()

Dim intI As Integer
Dim ChampSélect As String

If Not IsNull(Me.OpenArgs) Then
'Idenfifier le champ
intI = InStr(1, Me.OpenArgs, "!", vbTextCompare)
If intI <> 0 Then
ChampSélect = Mid(Me.OpenArgs, intI + 1)

'Affecter la date au champ passé en argument
Forms(FormulaireAppellant)(ChampSélect) = Me!Calend01.Value
End If
End If
'Fermer le Formulaire
DoCmd.Close
End Sub

Dans mon formulaire appellant, j'ai ce code sur un bouton de commande
"ChxDate", avec un control text "ChpATransf" où s'affiche la date retournée:

Private Sub ChxDate_Click()
'Ouvre le formulaire calendrier situé dans le formulaire "FormulCalend" en
passant comme param le champ ChpATransf

DoCmd.OpenForm "FormulCalend", acNormal, , , , , "FormulCalend!ChpATransf"

End Sub


Merci.

4 réponses

Avatar
Raymond [mvp]
Bonsoir.

le OpenForm me semble erroné: tu ouvres le formulaire FormulCalend en lui
passant "FormulCalend" comme nom de formulaire appelant.
essaie de remplacer :
DoCmd.OpenForm "FormulCalend", acNormal, , , , , "FormulCalend!ChpATransf"
par
DoCmd.OpenForm "FormulCalend", acNormal, , , , , Me.Name & "!ChpATransf"

bien laisser me.name pour que le nom soit toujours exact si tu décidais un
jour de renommer le formulaire.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413


"SweetEd" a écrit dans le message de
news:
| Bonjour,
|
| Je voudrais sélectionner une date en ouvrant un formulaire contenant un
| calendrier, ceci à partir d'un formulaire contenant un control onglet.
|
| Jusque là c bon mais pour retourner la date dans le formulaire appelant,
| j'obtiens une erreure "2465" disant que le champ transferré n'existe pas.
| J'ai bien entendu, vérifié l'orthographe du champ, comme de mon formulaire
| appellant.
|
| Ce code est adapté d'un livre présentant des exemples de bases access
2003:
|
|
| Private Sub Retourner_Click()
|
| Dim intI As Integer
| Dim ChampSélect As String
|
| If Not IsNull(Me.OpenArgs) Then
| 'Idenfifier le champ
| intI = InStr(1, Me.OpenArgs, "!", vbTextCompare)
| If intI <> 0 Then
| ChampSélect = Mid(Me.OpenArgs, intI + 1)
|
| 'Affecter la date au champ passé en argument
| Forms(FormulaireAppellant)(ChampSélect) = Me!Calend01.Value
| End If
| End If
| 'Fermer le Formulaire
| DoCmd.Close
| End Sub
|
| Dans mon formulaire appellant, j'ai ce code sur un bouton de commande
| "ChxDate", avec un control text "ChpATransf" où s'affiche la date
retournée:
|
| Private Sub ChxDate_Click()
| 'Ouvre le formulaire calendrier situé dans le formulaire "FormulCalend" en
| passant comme param le champ ChpATransf
|
| DoCmd.OpenForm "FormulCalend", acNormal, , , , , "FormulCalend!ChpATransf"
|
| End Sub
|
|
| Merci.
Avatar
SweetEd
Merci Raymond pour ta réponse mais j'obtiens toujours ce fichu message et
cette erreure "Impossible de trouver le champ 'ChpATransf' que vous avez
indiqué....".
Comment alors faire passer directement (CàD sans taper le nom du formulaire
appelant) dans le code retour?
....
Forms(????)(ChampSélect) = Me!Calend01.Value

Merci




Bonsoir.

le OpenForm me semble erroné: tu ouvres le formulaire FormulCalend en lui
passant "FormulCalend" comme nom de formulaire appelant.
essaie de remplacer :
DoCmd.OpenForm "FormulCalend", acNormal, , , , , "FormulCalend!ChpATransf"
par
DoCmd.OpenForm "FormulCalend", acNormal, , , , , Me.Name & "!ChpATransf"

bien laisser me.name pour que le nom soit toujours exact si tu décidais un
jour de renommer le formulaire.

--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413


"SweetEd" a écrit dans le message de
news:
| Bonjour,
|
| Je voudrais sélectionner une date en ouvrant un formulaire contenant un
| calendrier, ceci à partir d'un formulaire contenant un control onglet.
|
| Jusque là c bon mais pour retourner la date dans le formulaire appelant,
| j'obtiens une erreure "2465" disant que le champ transferré n'existe pas.
| J'ai bien entendu, vérifié l'orthographe du champ, comme de mon formulaire
| appellant.
|
| Ce code est adapté d'un livre présentant des exemples de bases access
2003:
|
|
| Private Sub Retourner_Click()
|
| Dim intI As Integer
| Dim ChampSélect As String
|
| If Not IsNull(Me.OpenArgs) Then
| 'Idenfifier le champ
| intI = InStr(1, Me.OpenArgs, "!", vbTextCompare)
| If intI <> 0 Then
| ChampSélect = Mid(Me.OpenArgs, intI + 1)
|
| 'Affecter la date au champ passé en argument
| Forms(FormulaireAppellant)(ChampSélect) = Me!Calend01.Value
| End If
| End If
| 'Fermer le Formulaire
| DoCmd.Close
| End Sub
|
| Dans mon formulaire appellant, j'ai ce code sur un bouton de commande
| "ChxDate", avec un control text "ChpATransf" où s'affiche la date
retournée:
|
| Private Sub ChxDate_Click()
| 'Ouvre le formulaire calendrier situé dans le formulaire "FormulCalend" en
| passant comme param le champ ChpATransf
|
| DoCmd.OpenForm "FormulCalend", acNormal, , , , , "FormulCalend!ChpATransf"
|
| End Sub
|
|
| Merci.





Avatar
Raymond [mvp]
tu peux toujours faire comme tu l'indiques:

Forms("leform")("lechamp") = Me!Calend01.Value

ça limite simplement le nombre de formulaires appelant ton calendrier.
si ça fonctionne essaie de voir l'erreur et de laisser la passage par
paramètre.
--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413


"SweetEd" a écrit dans le message de
news:
| Merci Raymond pour ta réponse mais j'obtiens toujours ce fichu message et
| cette erreure "Impossible de trouver le champ 'ChpATransf' que vous avez
| indiqué....".
| Comment alors faire passer directement (CàD sans taper le nom du
formulaire
| appelant) dans le code retour?
| ....
| Forms(????)(ChampSélect) = Me!Calend01.Value
|
| Merci
Avatar
SweetEd
Merci pour le conseil, j'avais homis les guillemets pour le nom du formulaire
appelant :)

J'ai éssayé en récupérant le nom du formulaire appelant en paramètre et ça
semble fonctionner.

1K merci.




tu peux toujours faire comme tu l'indiques:

Forms("leform")("lechamp") = Me!Calend01.Value

ça limite simplement le nombre de formulaires appelant ton calendrier.
si ça fonctionne essaie de voir l'erreur et de laisser la passage par
paramètre.
--
@+
Raymond Access MVP http://OfficeSystem.Access.free.fr/
Pour débuter sur le forum: http://www.mpfa.info/
PowerShell, une nouvelle approche de l'administration de l'environnement
Windows
http://www.comscamp.com/Tracker/Redirect.ashx?linkid_73b247-3260-4fed-861f-bb587f7ef413


"SweetEd" a écrit dans le message de
news:
| Merci Raymond pour ta réponse mais j'obtiens toujours ce fichu message et
| cette erreure "Impossible de trouver le champ 'ChpATransf' que vous avez
| indiqué....".
| Comment alors faire passer directement (CàD sans taper le nom du
formulaire
| appelant) dans le code retour?
| ....
| Forms(????)(ChampSélect) = Me!Calend01.Value
|
| Merci