OVH Cloud OVH Cloud

Message d'alerte avec code

13 réponses
Avatar
jcl
Bonjour,
Je viens une nouvelle fois faire appel aux lumières des pros
J'ai une fonction Age() qui marche bien et qui me donne pour chaque salarié
connu ou crée son age dans un formulaire de saisie de la pathologie
Je souhaiterais, si l'age est inférieur à 18 ans (un exemple) que des le
remplissage du champ dans le formulaire une boite de dialogie m'oblige à
m'arreter avec un message clair. Ca me permettra lorsque j'aurai compris ça
de lancer une procédure automatique pour faire autre chose. Mais je bloque à
ce niveau.
Je sais faire cette boite message mais elle ne s'affiche pas au remplissage
du champ
J'ai essayé sur les différentes options activation du formulaire ou mise à
jour du champ
Ca ne marche pas
Qui peut me dire ou mettre ce message, sur quelle partie du champ ou du
formulaire ?
Merci d'avance

jcl

10 réponses

1 2
Avatar
3stone
Salut,

jcl
J'ai une fonction Age() qui marche bien et qui me donne pour chaque salarié
connu ou crée son age dans un formulaire de saisie de la pathologie
Je souhaiterais, si l'age est inférieur à 18 ans (un exemple) que des le
remplissage du champ dans le formulaire une boite de dialogie m'oblige à
m'arreter avec un message clair. Ca me permettra lorsque j'aurai compris ça
de lancer une procédure automatique pour faire autre chose. Mais je bloque à
ce niveau.



En mettant la vérification dans l'événement sur "Après mise à jour"
de la zone de texte, cela devrait suffire, non ?



--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/
--------------------------------------

Avatar
jcl
Non ça ne marche pas
Dans le champ j'ai mis Age() en valeur mais rien ne s'affiche
Peut etre ma façon de tester n'est elle pas bonne
j'ai essayé avec me!age.value < 18 then msgbox ... mais ça ne passe pas
quelle doit etre la formule d'interrogation ?
merci

"3stone" a écrit dans le message de news:

Salut,

jcl
J'ai une fonction Age() qui marche bien et qui me donne pour chaque
salarié


connu ou crée son age dans un formulaire de saisie de la pathologie
Je souhaiterais, si l'age est inférieur à 18 ans (un exemple) que des le
remplissage du champ dans le formulaire une boite de dialogie m'oblige à
m'arreter avec un message clair. Ca me permettra lorsque j'aurai compris
ça


de lancer une procédure automatique pour faire autre chose. Mais je
bloque à


ce niveau.



En mettant la vérification dans l'événement sur "Après mise à jour"
de la zone de texte, cela devrait suffire, non ?



--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/
--------------------------------------






Avatar
3stone
Salut,

jcl
Peut etre ma façon de tester n'est elle pas bonne
j'ai essayé avec me!age.value < 18 then msgbox ... mais ça ne passe pas
quelle doit etre la formule d'interrogation ?



Attends...

Tu fait afficher l'age dans un contrôle, ok.
Mais, j'imagine que c'est lorsque tu encode sa date de naissance
que tu veux être averti du fait qu'il n'a pas 18 ans... c'est ca ?

Dans ce cas, sur "Après mise à jour" du champ "DateNaissance"
tu doit appeller ta fonction:

If Age(DateNaissance) < 18 Then
Msgbox "youyou..."
End if


Sinon, explique tes saisies...


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/
--------------------------------------

Avatar
jcl
Le remplissage se fait automatiquement du fait que la fonction age() est la
source du champ [Age]
En fait lorsque je mets dans l'évenement apres mise à jour de [Age] : if
Me![Age].value< 18 then MsgBox "Attention moins de 18 ans",vbcritical je ne
reçois pas le message d'alerte. Il faut dire qu'à ce stade le formulaire
n'est pas enregoistré et qu'il est en cours de remplissage
Par contre si j'y retourne ensuite et que l'age inscrit dans le champ est de
17,45 ans (exemple) là j'ai bien mon Msg
Mais pas en mode de saisie.
Me suis je bien fait comprendre ?
Merci de prendre le temps de m'aider


"3stone" a écrit dans le message de news:

Salut,

jcl
Peut etre ma façon de tester n'est elle pas bonne
j'ai essayé avec me!age.value < 18 then msgbox ... mais ça ne passe pas
quelle doit etre la formule d'interrogation ?



Attends...

Tu fait afficher l'age dans un contrôle, ok.
Mais, j'imagine que c'est lorsque tu encode sa date de naissance
que tu veux être averti du fait qu'il n'a pas 18 ans... c'est ca ?

Dans ce cas, sur "Après mise à jour" du champ "DateNaissance"
tu doit appeller ta fonction:

If Age(DateNaissance) < 18 Then
Msgbox "youyou..."
End if


Sinon, explique tes saisies...


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/
--------------------------------------






Avatar
3stone
Salut,

jcl
Le remplissage se fait automatiquement du fait que la fonction age() est la
source du champ [Age]
En fait lorsque je mets dans l'évenement apres mise à jour de [Age] : if
Me![Age].value< 18 then MsgBox "Attention moins de 18 ans",vbcritical je ne
reçois pas le message d'alerte.


C'est normal... puisqu'il n'y a pas "mise à jour" dans le sens Acces du terme,
c.a.d. déclenchement de l'événement "Après mise à jour"...


C'est bien pour cela que je t'ai proposer d'appeler la fonction sur après mise
à jour de la saisie de la date de naissance...
Car, j'imagine que tu ne peux calculer l'age *qu'après* saisie de la date de naissance ;-)


Si tu avais collé ta fonction "Age()" on aurait mieux vu !

Je te cite :
"Je souhaiterais, si l'age est inférieur à 18 ans (un exemple) que des le
remplissage du champ dans le formulaire une boite de dialogie m'oblige à
m'arreter avec un message clair."

Dès le remplissage du champ... tu parle bien du champ date de naissance ?


à suivre...

--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/
--------------------------------------

Avatar
3stone
Salut,

jcl
Je saisis d'bord un salarié avec son identité, ..., sa date de naissance, et
son emploi...
[...]

Ce formulaire ouvre un autre formulaire nommé Pathologie, où différents
champs existent (je ne détaille pas) et c'est là que le calcul de l'age
intervient dans un champ. Le code remplit automatiquement le champ
Je voudrais que le test se fasse là. Tu notes bien que ma date de naissance
n'est pas ressaisie.



Toujours bien de donner des présicions... ;-)

En fait, tu dois mettre la vérification dans l'événement "Sur activation"
(Form_Current) du formulaire "Pathologie"

If [Champ_Qui_Contient_l'Age] < 18 Then
msgbox "...."
End if


Ca marche maintenant ?

;-)


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/
--------------------------------------

Avatar
jcl
Non, ça je l'ai fait mais ça ne marche pas
Je viendrais demain avec le portable du bureau sur lequel je travaille et
pourrais donner le code utilisé pour le calcul de l'age
Ce code fonctionne (je n'ai pas dit qu'il était parfait !) mais il faudrait
que dans le code le test puisse se faire
Mais ça , je n'en suis pas capable
Grace à ce forum je progresse mais à pas lents
Merci à vous tous et à toi en particulier

"3stone" a écrit dans le message de news:

Salut,

jcl
Je saisis d'bord un salarié avec son identité, ..., sa date de
naissance, et


son emploi...
[...]

Ce formulaire ouvre un autre formulaire nommé Pathologie, où différents
champs existent (je ne détaille pas) et c'est là que le calcul de l'age
intervient dans un champ. Le code remplit automatiquement le champ
Je voudrais que le test se fasse là. Tu notes bien que ma date de
naissance


n'est pas ressaisie.



Toujours bien de donner des présicions... ;-)

En fait, tu dois mettre la vérification dans l'événement "Sur activation"
(Form_Current) du formulaire "Pathologie"

If [Champ_Qui_Contient_l'Age] < 18 Then
msgbox "...."
End if


Ca marche maintenant ?

;-)


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/
--------------------------------------







Avatar
3stone
re,

jcl
Non, ça je l'ai fait mais ça ne marche pas


C'est vrai... tu l'avais dit...

Dans ce cas, cela ne peut venir que d'un retard de synchronisation...
Et si tu appelle la fonction *dans* la zone de texte, ainsi :

= Age([DateNaissance])

il faudra bien que tu le modifie de cette facon...

Tu supprime l'appel de la fonction dans ce contrôle et en admettant
que la zone de texte qui affiche l'age s'appelle "txtAge" et le champ
avec la date [DateNaissance]

Te mets, toujours dans l'événement "Sur acticvation" du formulaire :

Me!txtAge = Age([DateNaissance])
If Me!txtAge.Values < 18 Then
MsgBox "Trop jeune..."
End if


Et si cela ne fonctionne pas, c'est que je n'ai rien compris à la facon
dont tu appelle la fonction "Age"...

;-))


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/
--------------------------------------

Avatar
jcl
Merci,
Des demain je tente cette manip
Je te dirais demain le résultat
Merci de ta patience et de ton aide
Bonne nuit


"3stone" a écrit dans le message de news:
#
re,

jcl
Non, ça je l'ai fait mais ça ne marche pas


C'est vrai... tu l'avais dit...

Dans ce cas, cela ne peut venir que d'un retard de synchronisation...
Et si tu appelle la fonction *dans* la zone de texte, ainsi :

= Age([DateNaissance])

il faudra bien que tu le modifie de cette facon...

Tu supprime l'appel de la fonction dans ce contrôle et en admettant
que la zone de texte qui affiche l'age s'appelle "txtAge" et le champ
avec la date [DateNaissance]

Te mets, toujours dans l'événement "Sur acticvation" du formulaire :

Me!txtAge = Age([DateNaissance])
If Me!txtAge.Values < 18 Then
MsgBox "Trop jeune..."
End if


Et si cela ne fonctionne pas, c'est que je n'ai rien compris à la facon
dont tu appelle la fonction "Age"...

;-))


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/
--------------------------------------






Avatar
jcl
Voici le code que j'utilise pour afficher l'age :
Option Compare Database
Global Const Calcul = 365.25
Public Function MaVal()
' Nz évite les erreurs impossible Valeur null
Set MaVal = Nothing
MaVal = Nz(Forms("Date vacation")("Date de vacation").Value, "")
End Function

Function DDN()
Set DDN = Nothing
DDN = DLookup("[Date de naissance]", "Salariés", "[N° de code] Forms![Pathologie essai]![N° de code]")
End Function
Function DateJour()
Set DateJour = Nothing
DateJour = Nz(Forms("Pathologie essai")("Date de visite").Value, "")
End Function

Function Age()
Age = (DateJour() - DDN()) / Calcul
End Function

Je mets =Age() dans un champ texte et l'age est affiché correctement
Mais je n'arrive pas a avoir ce fichu message d'alerte
Merci si tu peux m'aider
Je suis sur qu'il doit y avoir plus simple mais je suis bidouilleur et non
professionnel comme toi

"3stone" a écrit dans le message de news:
#
re,

jcl
Non, ça je l'ai fait mais ça ne marche pas


C'est vrai... tu l'avais dit...

Dans ce cas, cela ne peut venir que d'un retard de synchronisation...
Et si tu appelle la fonction *dans* la zone de texte, ainsi :

= Age([DateNaissance])

il faudra bien que tu le modifie de cette facon...

Tu supprime l'appel de la fonction dans ce contrôle et en admettant
que la zone de texte qui affiche l'age s'appelle "txtAge" et le champ
avec la date [DateNaissance]

Te mets, toujours dans l'événement "Sur acticvation" du formulaire :

Me!txtAge = Age([DateNaissance])
If Me!txtAge.Values < 18 Then
MsgBox "Trop jeune..."
End if


Et si cela ne fonctionne pas, c'est que je n'ai rien compris à la facon
dont tu appelle la fonction "Age"...

;-))


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/
--------------------------------------






1 2