allroadspp
Messages postés38Date d'inscriptionsamedi 16 juin 2007StatutMembreDernière intervention31 octobre 2008
-
31 janv. 2008 à 21:21
allroadspp
Messages postés38Date d'inscriptionsamedi 16 juin 2007StatutMembreDernière intervention31 octobre 2008
-
7 mars 2008 à 11:54
Bonsoir,
je bute depuis pas mal de temps ça :
Lorsque je veux faire exécuter une fonction j'ai ce message :
fonction "xxxx" non définie dans l'expression....
J'ai beau coher et décocher les références, rien à faire....à priori pas d'erreur dans le code.....j'ai suivi les tutoriels...help me!!! (access 2007, WXP)
Function Date_convocation3(strDécision As String) As Date
Dim DtmConvocation As Date
'Décision(1) = "Apte 1 an"
'Décision(2) = "Apte 2 ans"
'Décision(3) = "Mis en attente de révision par le médecin-chef"
'Décision(4) = "Inapte opérationnel 1 mois"
'Décision(5) = "Inapte opérationnel 2 mois"
'Décision(6) = "Inapte opérationnel 3 mois"
'Décision(7) = "Inapte opérationnel 6 mois"
'Décision(8) = "Inapte opérationnel 12 mois"
'Décision(9) = "Inapte opérationnel définitif"
'Décision(10) = "Inapte secours à personnes temporaire"
'Décision(11) = "Inapte Secours à personnes définitif"
'Décision(12) = "Inapte incendie temporaire"
'Décision(13) = "Inapte incendie définitif"
'Décision(14) = "Inapte aux sports statutaires temporaire"
'Décision(15) = "Inapte aux sports statutaires définitif"
'Décision(16) = "Adaptation personnelle au sport"
'Décision(17) = "Apte avec restrictions (préciser)"
'Décision(18) = "A revoir"
Select Case strDécision
Case "Apte 1 an": DtmConvocation = (Date + 365)
Case "Apte 2 ans": DtmConvocation = (Date + 730)
Case "Mis en attente de révision par le médecin-chef": DtmConvocation = (Date + 30)
Case "Inapte opérationnel 1 mois": DtmConvocation = (Date + 30)
Case "Inapte opérationnel 2 mois": DtmConvocation = (Date + 60)
Case "Inapte opérationnel 3 mois": DtmConvocation = (Date + 90)
Case "Inapte opérationnel 6 mois": DtmConvocation = (Date + 180)
Case "Inapte opérationnel 12 mois": DtmConvocation = (Date + 365)
Case "Inapte opérationnel définitif": DtmConvocation = (Date + 365)
Case "Inapte secours à personnes temporaire": DtmConvocation = (Date + 90)
Case "Inapte Secours à personnes définitif": DtmConvocation = (Date + 365)
Case "Inapte incendie temporaire": DtmConvocation = (Date + 90)
Case "Inapte incendie définitif": DtmConvocation = (Date + 365)
Case "Inapte aux sports statutaires temporaire": DtmConvocation = (Date + 90)
Case "Inapte aux sports statutaires définitif": DtmConvocation = (Date + 365)
Case "Adaptation personnelle au sport": DtmConvocation = (Date + 365)
Case "Apte avec restrictions (préciser)": DtmConvocation = (Date + 90)
Case "A revoir": DtmConvocation = (Date + 30)
Case Else: DtmConvocation = "Vérifier la date de convocation !"
End Select
Date_convocation3 = DtmConvocation
End Function
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 2 févr. 2008 à 12:23
Salut,
Parce que : "Vérifier la date de convocation !"
n' est pas une date !
De plus , si tu veux ajouter un nombre à une date ,
comme dans (Date + 365) par exemple,il faut utilider DateAdd("d",Date,350).
<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
allroadspp
Messages postés38Date d'inscriptionsamedi 16 juin 2007StatutMembreDernière intervention31 octobre 2008 2 févr. 2008 à 13:06
Ok,
A priori même si ce n'est pas une date, le fait d'écrire dtm au lieu de str peut provoquer un bug ?
[De plus , si tu veux ajouter un nombre à une date ,
comme dans (Date + 365) par exemple,il faut utilider DateAdd("d",Date,350). ].... je vais essayer, mais cette syntaxe fonctionne dans la requette !
Sont-ce ces deux points qui peuvent expliquer le messagebox : " fonction "Date_convocation3" non définie dans l'expression ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
LIBRE_MAX
Messages postés1402Date d'inscriptionmardi 1 mai 2007StatutMembreDernière intervention 7 octobre 20126 2 févr. 2008 à 14:12
Ah oui, ...il me semble que j' ai compris .
Corriges-moi si je me trompe.
-Tu as définis ta fonction dans Access, et tu l' as
intègré dans une requete.
-Si tu exécutes cette requete dans Access, elle marche.
Normal: c' est une fonction intègrée, à l' inmage des
fonctions prédéfinies.
-Mais lorsque tu exécutes cette requete depuis VB,
ça bug !
Je ne dirais pas c' est Normal, mais en tout cas
j' ai jamais réussi à le faire.J' ai tout de suite abandonné
cette approche dès les premiers essais.Depuis j' ai jamais cherché
à résoudre ce problème.
Si tu trouves, n' oublies pas de m' avertir.
Bonne continuation.
<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
allroadspp
Messages postés38Date d'inscriptionsamedi 16 juin 2007StatutMembreDernière intervention31 octobre 2008 2 févr. 2008 à 20:49
Désolé, c'est pas ça le pb. Le fait est que j'ai intégré cette fontion dans une requête et lorsque j'ouvre cette requête j'ai cette foutu message-box.
Lorsque je vais dans les références (sous VBA) j'ai beau les décocher et les recocher, comme certains l'ont suggéré, mais pour moi rien n'y fait.
Au fait j'ai modifié les codes selon ta correction, sauf pour la dernière ligne car je n'ai pas pigé comment il faudrait rédiger cette ligne si il y a erreur :
Case Else: DtmConvocation = "Vérifier la date de convocation !"
Effectivement ce n'est pas une date, mais c'est le message que je voudrais voir afficher si les autres conditions (les 18) ne sont pas remplies.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 2 févr. 2008 à 21:53
Autre chose qui m'échappait...
On est dans un Function qui retourne une date.
Tu dois donc avoir une date de retour quand tu écris
Date_convocation3 = DtmConvocation
Donc, dans ton Case Else, mets une date bidon du genre 1/1/1900
>>> Case Else: DtmConvocation = #1/1/1900#
Et lorsque tu appelles cette Function, vérifies la valeur de retour. Si elle est égale à 1/1/1900, fais ce que tu dois faire... inscrire un message dans un textbox, mettre un MsgBox, autre...(?)
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
allroadspp
Messages postés38Date d'inscriptionsamedi 16 juin 2007StatutMembreDernière intervention31 octobre 2008 2 févr. 2008 à 21:54
Oui, je veux afficher ce message à la place d'une date (puisque les conditions ne sont pas remplies).
Par contre, je ne pourrais pas essayer cette option, puisque j'ai toujours cette maudite "fonction non définie dans l'expression", à l'ouverture de la requête...quelqu'un a t'il déjà eu ce problèmeuh ?
allroadspp
Messages postés38Date d'inscriptionsamedi 16 juin 2007StatutMembreDernière intervention31 octobre 2008 2 févr. 2008 à 22:00
Ah OK, je tenterai ça.......dès que quelqu'un m'aura tuyauté sur ce problème de fonction non définie dans l'expression car actuellement ma requête ne s'ouvre pas.....puisque la fonction n'est pas reconnue....ouinnnnnn !
allroadspp
Messages postés38Date d'inscriptionsamedi 16 juin 2007StatutMembreDernière intervention31 octobre 2008 2 févr. 2008 à 22:47
Première ligne :
Public Function Date_convocation3(strDécision As String) As Date
Puis :
Dim DtmConvocation as Date
(j'ai mis l'ensemble du code dans mon premier post)
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 2 févr. 2008 à 22:54
Non non non... on va y arriver...
Le code de ta Function, tu l'as déjà donné et je vois bien comment tu l'as nommée et définie, avec un paramètre strDécision et retour sous format Date... Mais pour pouvoir l'utiliser, tu dois l'appeler à quelque part dans ton programme, non ? C'est cet appel que je veux voir.
Normalement, ce devrait être quelque chose comme
MonTextboxDate = Date_convocation3("MaValeur")
ou encore
MaVariableDate = Date_convocation3("MaValeur")
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
allroadspp
Messages postés38Date d'inscriptionsamedi 16 juin 2007StatutMembreDernière intervention31 octobre 2008 2 févr. 2008 à 23:03
Oui, oui (ahem....merci pour ta patience) alors voilà :
J'ai mis dans le champs de ma requête :
Convocation : Date_convocation3([Décision)]
Décision est le titre d'un autre champ de cette requête. ce champ contient un menu déroulant avec les 18 items que j'ai fais apparaître dans le code pour mémoire.