[VBA] probleme fonction

Résolu/Fermé
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 - 13 mars 2007 à 10:22
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 - 13 mars 2007 à 17:00
salut a tous

Je voudrais faire une fonction qui ne renvoi rien

En fait dans ma form je commence par affecter des valeures a des variables

Ces variables je les utilise ensuite dans ma fonction que j'ai creé dans un module
Et seulement apres j'appelle ma fonction

Probleme ca ne marche pas

Merci a ceux qui m'aiderons

10 réponses

blux Messages postés 26748 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 29 mars 2025 3 332
13 mars 2007 à 10:28
Salut,

qu'est-ce qui ne marche pas ?
0
bonjour

une fonction qui ne renoie rien est une procédure
il faut mettre sub au lieu de function

ex :

sub maFonction(a as integer, b as integer)

...

end sub
0
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209
13 mars 2007 à 10:30
en fait g l'impression qui commence par executer le module et seulement apres les form est ce que c'est ca ?

J'ai declarer les variables que j'utilise dans ma fonction en public dans mon module vous croyez que c'est bon?
0
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209
13 mars 2007 à 10:31
dans tes parenthese c'est quoi c'est des valeurs que tu retourne ?
moi je veu rien retourner
0
ce sont les valeurs des arguments, y a pas de valeur de retour....
0
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209 > rasta67
13 mars 2007 à 10:35
En fait il faut que je mette les variables que j'utilise dans ma fonction dans les paranthese
0
rasta67 > fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021
13 mars 2007 à 10:42
oui dans l'appel :
exemple pour une fonction qui ne renvoie rien et et prend en argument deux entiers

dans le module :

sub MaFonction(a as integer, b as integer)
... traitement...
end sub

dans le formulaire, appel
dim entier1 as integer
dim entier2 as integer

MaFonction(entier1,entier2)
0
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209 > fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021
13 mars 2007 à 10:46
Je peu mettre les meme nom
par exemple

sub MaFonction(entier1 as integer, entier2 as integer)
... traitement...
end sub

dans le formulaire, appel
dim entier1 as integer
dim entier2 as integer

MaFonction(entier1,entier2)
0
rasta67 > fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021
13 mars 2007 à 10:49
oui car ils sont des dans éléments différents (un module et un formulaire distincts : portée locale)...
mais faire attention quand même
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pouvez vous renvoyer le code ?
0
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209
13 mars 2007 à 14:07
Il est umpeu modifier

Ma fonction dans mon module

Sub Requete(nom_table As String, nom_champ As String, nom_requete As String, nom_texte As String, lstnom As String)

Dim sql As String
Dim Qry As DAO.QueryDef
Dim Rs As DAO.Recordset


sql = "SELECT " & nom_table & "." & nom_champ & " FROM " & nom_table
sql = sql & " WHERE (((" & nom_table & ".utilisateur) = """ & lstnom & """)) "

DoCmd.DeleteObject acQuery, nom_requete 'supprime la requête
CurrentDb.CreateQueryDef nom_requete, sql 'crée une nouvelle requete

Set Qry = CurrentDb.QueryDefs(nom_requete)
Set Rs = Qry.OpenRecordset

While Not Rs.EOF

visualisation_utilisateurs!nom_texte = Rs(0)
Rs.MoveNext

Wend
Set Qry = Nothing
Set Rs = Nothing



End Sub


et dans mon form

'Remplissage Nom_PC

Dim nom_table As String
Dim nom_champ As String
Dim nom_requete As String
Dim nom_texte As String
Dim lstnom As String


nom_table = "PC"
nom_champ = "nom_PC"
nom_requete = "nom_PC"
nom_texte = "txtnom_PC"
lstnom = Me.lstnom

Requete nom_table, nom_champ, nom_requete, nom_texte, lstnom
0
qques minutes j'essaie de reproduire sous access le meme environnement
0
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209
13 mars 2007 à 14:11
L'erreur qu'il m'affiche se trouve dans le module au niveau

visualisation_utilisateurs!nom_texte = Rs(0)

j'ai regarder au niveau au dessus (la ou je crée ma requete et elle est bien créé puisque je peut l'ouvrir apres elle a bien pris les nouveau parametres en compte
le probleme est vraiment au niveau Rs
0
mettre Set Rs = Qry.OpenRecordset()
à la place de Set Rs = Qry.OpenRecordset

et remettre la requete en commentaire a la place de l'actuelle
0
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209
13 mars 2007 à 14:29
ca me fait toujours la meme erreur
toi ca marche ?
0
rasta67 > fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021
13 mars 2007 à 14:34
oui chez moi ca marche
il dit quoi comme erreur exactement et à quel ligne ????
0
rasta67 > fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021
13 mars 2007 à 14:38
je crois avoir compris
le pb ne vient pas du recordset

comme tu es dans un module, tu peux pas ecrire directement :
visualisation_utilisateurs!nom_texte = ...

essaie de le remplacer par un string

dim essai as string au debut du module

puis essai = rc(0)
0
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209 > fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021
13 mars 2007 à 14:44
Je vais essayer mais il faut que je rentre

visualisation_utilisateurs!nom_texte = essai
dans mon form ?
0
non dans le module remplacer
visualisation_utilisateurs!nom_texte = Rs(0)

par

essai = Rs(0) où essai string declaré au debut de la proc du module(dim essai as string)
0
blux Messages postés 26748 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 29 mars 2025 3 332
13 mars 2007 à 14:52
visualisation_utilisateurs!nom_texte.value = Rs(0)
ou
visualisation_utilisateurs!nom_texte.text = Rs(0)

Ca dépend du type de contrôle qu'est 'nom_texte'...
0
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209
13 mars 2007 à 14:54
C'est bon j'ai presque trouvé il faut mettre

Form_choix_du_mode!visualisation_utilisateurs!txtnom_PC= Rs(0)

c'est toujours pareil il faut lui donner le chemin complet

mais dans le cas si dessus ca ne resoud rien je voudrais le faire avec nom_texte et pas directement le nom du texte de mon formulaire
0
blux Messages postés 26748 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 29 mars 2025 3 332
13 mars 2007 à 15:17
Forms("Form_choix_du_mode")("visualisation_utilisateurs")(nom_texte) = Rs(0) ?
0
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209
13 mars 2007 à 15:24
nom VB croit que l'on cherche apres un formulaire et pas une form de VB
0
rasta67 > fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021
13 mars 2007 à 15:35
si c'est une form VB:

nom_form.nom_controle.Text = rs(0)
0
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209 > rasta67
13 mars 2007 à 15:37
nom_controle c'est le nom de mon formulaire ?
je vien d'essayer c'est pas terrible
0
rasta67 > fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021
13 mars 2007 à 15:39
nom celui du controle....

utilise ctrl + Esp pour voir l'arboresecence des objets
0
fl0 Messages postés 357 Date d'inscription lundi 5 mars 2007 Statut Membre Dernière intervention 10 novembre 2021 209 > rasta67
13 mars 2007 à 15:48
Ca ne marche pas ctrl + esp pour voir l'arborescence
mais de toute facon je connait le chemin

J'ai compris le probleme mais je n'arrive vraiment pas a le resoudre j'espere que tu pourra m'aider

en fait le code

Form_choix_du_mode!visualisation_utilisateurs!nom_texte = Rs(0)

s'attend directement a avoir le nom du fichier texte qui ce trouve dans le chemin specifié dans ce code
donc pour lui "nom_texte" c'est une case texte appelé nom_texte qui ce trouve dans le formulaire visualisation_utilisateur

donc il me met le msg d'erreur

"Impossible de trouve le champ "nom_texte" auquel il est fait reference dans votre expression"

et quand je rentre le code

Form_choix_du_mode!visualisation_utilisateurs!txtnom_PC = Rs(0)
la ca marche
txtnom_PC est une case texte qui existe dans mon formulaire

dit moi si je me fait bien comprendre
0