[VBA] Accès à champ form à partir d'un module

Résolu/Fermé
Karuyo - Modifié par Karuyo le 15/04/2011 à 11:51
 Utilisateur anonyme - 15 avril 2011 à 18:50
Bonjour,
Alors voilà, je suis sous accèss 2003 et je débute.

J'ai dans deux formulaires besoin de la même fonction, deux fois (donc j'appel 4 fois la fonction en tout)
Pour ne pas avoir à répéter 4 fois ce code, j'ai voulu externaliser cette fonction.
J'ai donc créé un Module ou j'y ai placé ma fonction en Public.

Mon problème :
Je voudrais savoir si c'est possible de tester la valeur d'un champs du formulaire qui fais appel à cette fonction, puis de le modifier à partir de ce module. Car pour le moment j'ai une erreur '424 Objet requis'.

Merci de votre aide.


[Edit] : Je viens d'avoir une idée : Utiliser un paramètre supplémentaire dans cette fonction qui contiendrais le nom du formulaire (Me.Name je pense) ainsi ça serais plus facile de cibler le champ voulu.

Un truc dans le genre [NomForm].Form![Champ] devrais marcher, enfin je l'espère.

Je testerais ça en début d'après midi :)

3 réponses

Utilisateur anonyme
15 avril 2011 à 15:31
Bonjour,

Vous appelez bien votre fonction par :

NomDuModule.NomDeLaFonction

???

Votre second formulaire est-il un sous-formulaire du premier ?

Cdt

Lupin
1
Bon, j'avance mais il y a toujours un petit problème :/
Déja le paramètre n'est pas le nom du formulaire, mais directement le formulaire lui même, plus simple.

Le problème :
Le premier formulaire (un formulaire pour faire des enregistrement) marche parfaitement. Par contre le second (le formulaire d'un enregistrement ciblé suite à une recherche pour modifier celui-ci) ne marche pas lorsque je fais appel à la fonction du module. J'obtiens l'erreur suivante :
"Utilisation incorrecte de la propriété"

Comment regler ce problème ? :/

J'ai aussi remarqué que le formulaire qui marche à nomDuForm.Form.nomChamp
alors que le second formulaire, n'a pas les champs dans nomDuForm.Form.* ses champs se trouvent uniquement dans nomDuForm.*

Celà peut il avoir un lien avec mon problème ?

Cependant, même en modifiant ma fonction pour utiliser directement ces champs, le second formulaire ne marche pas.

Avez vous une idée ?
0
Bonjour,

Non, je l'appelais directement NomDeLaFonction et le second formulaire n'est pas un sous-formulaire, c'est un formulaire instantané créé à partir d'une table.

J'ai remplacé par NomDuModule.NomDeLaFonction et ça marche ! :)

Ce qui m'intrigue c'est que l'appeler directement NomDeLaFonction marche dans un formulaire mais pas dans l'autre. M'enfin le problème est reglé et c'est le principal, Mercii !
0
Utilisateur anonyme
15 avril 2011 à 18:50
re:

Pour éviter les problèmes "d'espace de noms", tu dois toujours appellé
une routine ou fonction avec le nom de l'objet qui le contient.

Un module, un formulaire, une module de classe...

Cdt

Lupin
0