Remplacer plusieurs procédure par une seule dans un module - VB/VBA/VBS - Programmation
Marsh Posté le 20-02-2008 à 17:30:11
Ta procédure devra contenir plusieurs paramètres :
-Le nom du champ à tester (Code_contact dans ton exemple)
-La valeur à comparer au contenu du champ (renvoyée par ld_nom ou autre)
-Le recordset qui permet de faire la recherche (rs)
Avec ces paramètres, ta procédure peut travailler (à moins que j'ai loupé un truc)
Il te suffit alors de copier les instructions actuelles en les adaptant avec les noms de paramètres que tu vas déclarer.
Sub ProcDe4rocky4(sNomChamp As String, sValeur As String, rs As Object)
Attention, sValeur est de type String ! Mais quand tu fais un .FindFirst, fais gaffe à rajouter ou pas les quotes autour de ta valeur suivant si sValeur est censé contenir du texte ou un nombre.
Tu appelles cette procédure par :
ProcDe4rocky4 "code_contact", Str(Nz(Me![ld_nom], 0)), rs
Marsh Posté le 21-02-2008 à 09:11:07
merci pour ta réponse.
Alors j'ai fait comme ceci dans mon module:
Code :
|
Et j'appel la procédure dans le formulaire :
Code :
|
Je n'ai pas mis "rs" car cela ne marchait pas.
Lorsque j'exécute le formulaire appelant la procédure, j'obtiens ce message d'erreur :
erreur d'exécution '2465':
impossible de trouver le champ "&liste&" auquel il fait référence dans votre expression.
Marsh Posté le 21-02-2008 à 10:38:24
Ton problème est lié à ta formule « Str(Nz(frm![" & liste & "], 0)) » dont tu n'as pas besoin si tu la passes déjà en paramètre
La ligne
rs.FindFirst "[" & champ & "] = " & Str(Nz(frm![" & liste & "], 0))
devient
rs.FindFirst "[" & champ & "] = " & liste
Marsh Posté le 21-02-2008 à 14:00:06
J'ai fait comme ça
rs.FindFirst "[" & champ & "] = " & Str(Nz(frm(liste), 0))
Et ca marche
Merci bien
Marsh Posté le 20-02-2008 à 11:31:56
Bonjour,
J'ai plusieurs procédure sur plusieurs formulaires Access qui sont les mêmes.
Et je voudrais mettre la procédure dans un module et l'appeler à chaque fois que j'en ai besoin.
Voilà la procédure d'un formulaire que je veux mettre dans un module :
Code_contact est le champ d'une table et ld_nom une liste déroulante du formulaire.
Ces deux là change à chaque fois que la procédure doit être appelée.
Comment dois-je écrire ma procédure dans mon module afin qu'elle puisse etre utilisé à chaque fois ?
Comment dois-je l'appeler par la suite ?
Je vous remercie par avance.
4rocky4
---------------
- Un con qui marche ira plus loin qu'un intellectuel assis -