Création code dans un module et relation avec requête

Signaler
Messages postés
5
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
5 août 2010
-
Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
-
Bonjour

j'ai un problème avec une requête.
j'ai créer un code dans un module :
Public Function Mafonction(NphraseR As Integer) As Integer

Select Case [NphraseR]
[Case Is = 1, 2, 3, 4, 5, 6, 7, 8]
Mafonction = 2
[Case Is = 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41]
Mafonction = 3
[Case Is = 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68]
Mafonction = 4
[Case Is = 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89]
Mafonction = 5
[Case Is = 90]
Mafonction = 1
End Select

End Function

et après dans ma requête j'ai mis ce code :
danger2:mafonction([phrasesR]![NphraseR])
et quand j'execute ma requête il me met un message d'erreur "fonction "mafonction" non défini dans l''expression.
J'ai beau tourner les choses dans tous les sens je ne comprends pas ce qui ne fonctionne pas!
j'ai lu qu'il fallait aller dans "outil" et "reference" dans le module pour cocher les bibliothèque concernée mais j'avoue que je ne sais pas quoi cocher !!
merci beaucoup par avance pour l'aide que vous pourrez m'apporter

15 réponses

Messages postés
140
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
1 novembre 2010
6
Bonsoir, est ce du VB.net?
Si oui je verrais la fonction comme cela :
    Public Function Mafonction(ByVal NphraseR As Integer) As Integer

        Select Case NphraseR
            Case Is = 1, 2, 3, 4, 5, 6, 7, 8
                Mafonction = 2
            Case Is = 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41
                Mafonction = 3
            Case Is = 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68
                Mafonction = 4
            Case Is = 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89
                Mafonction = 5
            Case Is = 90
                Mafonction = 1
        End Select
    End Function


et pour l'appeler :
Mafonction(11)

"11" pour l'exemple, ce doit être un integer, le résultat de la requête.
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
51
Salut

Il faut compendre
et après dans ma requête j'ai mis ce code :
danger2:mafonction([phrasesR]![NphraseR])

c'est quoi ta requete ?
Messages postés
2814
Date d'inscription
mardi 15 avril 2003
Statut
Membre
Dernière intervention
2 juin 2020
37
Ou plus optimisé :

Public Function Mafonction(ByVal NphraseR As Integer) As Integer
        Select Case NphraseR
            Case 1 To 8
                Return 2
            Case 9 To 41
                Return 3
            Case 42 To 68
                Return 4
            Case 69 To 89
                Return 5
            Case 90
                Return 1
        End Select
    End Function


Question référence, non. Aucune référence n'est à ajouter pour ce code, le message d'erreur survient à cause des erreur de syntaxe de ton code, comme te l'a suggéré christoni.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
1
Bonjour
faire une recherche générale sur mafonction pour vérifier s'il n'y a pas une variable du même nom

Bonne journée
Messages postés
5
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
5 août 2010

Bonjour à tous, merci beaucoup pour vos réponses mais ::

christoni, j'ai essayé ta formule mais ça me met toujours ce message d'erreur "fonction "mafonction" non définie!
et je ne comprend pas quand tu me dis ma fonction (11) ? qu'est-ce-qu'il faut que je nomme comme ça? mon module, ma requête


shayw: en fait après avoir créér un module avec une fonction, je voulais l'insérer dans un champ calculé d'un requête? mais au final la question c'est est-ce-possible ? parce que je ne peux pas rentrer les codes ditrectement dans la requête parce qu'il y a trop de caractéres !! donc je suis obligé de créer un module!
mais en fait ce qui ne va pas c'est le lien entre le module et ce que je met dans mon champ calculé de ma requete!!

Mayzz : j'ai également essayé ta formule mais sans succès , j'ai toujours le message d'erreur dan sma reqûete

est-ce-que quelqu'un pourrait me dire ce que je dois mettre dans mon champ calculé de ma requete !

merci par avance
Messages postés
140
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
1 novembre 2010
6
Bonjour,
n'est ce pas du VBA ?
(Que je ne connais pas bien).
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
51
Bonjour je comprend de --

Tu as la fonction Mafonction
sans parler de requete si tu appelle Mafonction
dim result as integer
result = Mafonction(30)
aussi tu obtiens l'erreur "fonction "mafonction" non défini dans l''expression
Messages postés
140
Date d'inscription
mardi 25 novembre 2003
Statut
Membre
Dernière intervention
1 novembre 2010
6
Toujours mes doutes.
Le module n'est t'il pas un module sous Acces?
Et nous raisonnons en VB.Net
Messages postés
5
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
5 août 2010

Christoni : oui j'ai créer un module sous access dans ma base de données

shayw : le message d'erreur "fonction "mafonction" non défini dans l''expression apparait quand je veux éxecuter ma requête. ce qui me fait dire que le lien entre la requête et le module créer n'est pas bon !
je dois mal m'y prendre !!

si je récapitule :
1- j'ai créer un module dans ma base de données access que je suis en train de developper
2- je veux que ma formule écrite dans le module apparraisse dans une reqûete donc pour cela il faut que je créer un lien entre le module et la requete mais j'y arrive pas !! est-ce-possible d'après vous ?

puisque en gros je veux que suivant les valeurs de mon paramètre tester (dans la formule écrite dans mon module) appraisse dans ma reqûéte les valeurs que j'ai défini dans mon module!!

j'espère que je suis claire!!
Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
1
Voici ce que j'ai fait.
J'ai crée une table phrasesR contenant le champ NphraseR en numérique.

J'ai crée le module que tu décrit avec la modification suivante :
suppression des crochets pour chaque case

J'ai crée la requête suivante : SELECT mafonction([phrasesR]![NphraseR]) AS danger2 FROM phrasesR;

Celà fonctionne
Messages postés
5
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
5 août 2010

bonjour

tu as de la chance parce que moi non !!
Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
1
Pour info j'ai fait celà sous access 2003 sp3
Messages postés
5
Date d'inscription
mercredi 4 août 2010
Statut
Membre
Dernière intervention
5 août 2010

AH
c'est peut être ça parce que moi j'ai 2007
Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
1
Bonjour

Je vais essayer sous 2007 ce WE car il est chez moi.
Au boulot je n'ai que 2000 et 2003.
En septembre on me rajoute 2010

Bonne journée
Messages postés
303
Date d'inscription
mercredi 12 janvier 2005
Statut
Membre
Dernière intervention
3 octobre 2013
1
Bonjour
Dans un premier temps j'ai ouvert la base crée en access 2003 sous 2007.
J'ai eu le message d'erreur.
J'ai regardé les références. Outre celles propres à 2007 il y avait aussi DAO 3.6 et ADO 2.1
J'ai remplacé ADO 2.1 par la plus récente ADO 2.8.
Aprés compilation : plus d'erreur et fonctionnement normal.

Dans un deuxième temps j'ai crée une base 2007 et importé table, requête et module.
Après compilation : fonctionnement normal.

Reste la troisième possibilté, tout créer sous 2007.Je vais essayer ce soir mais sans garanti, je part en congés bientôt.

Bonne journée