Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Procédure dans un module puis l'appeler [ Langages dérivés / VBA ] (4rocky4)

mercredi 20 février 2008 à 11:01:29 | Procédure dans un module puis l'appeler

4rocky4

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 :

Private Sub ld_nom_AfterUpdate()
    Dim rs As Object
    Set rs = Me.Recordset.Clone
    rs.FindFirst "[code_contact] = " & Str(Nz(Me![ld_nom], 0))
    Me.Détail.Visible = True
    If Not rs.EOF Then
    Me.Bookmark = rs.Bookmark
    End If
End Sub

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



mercredi 20 février 2008 à 11:37:29 | Re : Procédure dans un module puis l'appeler

jrivet

Membre Club
Salut,
Essaie de passer les deux parametre en  String
ATTENTION dans un module tu ne pourras pas utiliser ME

   Dim rs As Object
   Set rs = Me.Recordset.Clone
   rs.FindFirst "[code_contact] = " & Str(Nz(Me![ld_nom], 0))
   Me.Détail.Visible = True
   If Not rs.EOF Then
   Me.Bookmark = rs.Bookmark
   End If
By Renfield


@+: Ju£i€n
Pensez: Réponse acceptée

mercredi 20 février 2008 à 11:44:41 | Re : Procédure dans un module puis l'appeler

wassimez

Bonjour ,
en plus il faut que tu change
Private Sub ld_nom_AfterUpdate()
par
Public Sub ld_nom_AfterUpdate()


mercredi 20 février 2008 à 11:49:26 | Re : Procédure dans un module puis l'appeler

4rocky4

Re,

Alors dans mon module j'ai mis :
---------------------------
Sub liste_recherche(frm As Form, champ AsString, liste AsString)
    ' Rechercher l'enregistrement correspondant au contrôle.
    Dim rs AsObject
    Set rs = frm.Recordset.Clone
    rs.FindFirst"[" & champ & "] = " & Str(Nz(frm![" & liste & "], 0))
    'on affiche la partie détail
    frm.Détail.Visible = True
    'si le nom saisie n'existe pas
    IfNot rs.EOFThen
    frm.Bookmark = rs.Bookmark
    EndIf
EndSub
--------------------------
puis pour appeler la procédure je procède comme ça :

--------------------------
PrivateSub ld_recherche_AfterUpdate()
Call liste_recherche(Me, code_contact, ld_nom)
EndSub
-------------------------

Mais lorsque je lance mon formulaire et que jeffectue l'action qui exécute ma 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.




mercredi 20 février 2008 à 14:47:18 | Re : Procédure dans un module puis l'appeler

4rocky4

Comment faire pour régler ce problème ?


jeudi 21 février 2008 à 00:03:09 | Re : Procédure dans un module puis l'appeler

MPi

>> Code_contact est le champ d'une table et ld_nom une liste déroulante du formulaire.
Si ld_nom est une liste déroulante, tu ne peux pas la passer en paramètre As String.

Tu dois soit la passer comme Object ou Listbox et changer ton code, ou soit passer le texte sélectionné et là tu dois changer l'appel
Call liste_recherche(Me, code_contact, ld_nom.Text)

Et pourquoi déclarer rs As Object plutôt que As Recordset ?
Peut-être est-ce nécessaire pour cette méthode de clone...(?) Je trouve ça étrange tout de même...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI


jeudi 21 février 2008 à 09:25:38 | Re : Procédure dans un module puis l'appeler

4rocky4

Bonjour,

Si je déclare rs as recordet, j'obtiens une erreur ici rs.FindFirst.
En mettantld_nom.Text, cela ne change rien.

J'ai toujours le même message d'erreur :

erreur d'exécution '2465':
impossible de trouver le champ "&liste&" auquel il fait référence dans votre expression.


Et en cliquant sur débogage, j'arrive sur ce code :



En mettant liste as listbox affiche également un problème,Imcompatibilité de type.
Et ca me montre ce code :
Call liste_recherche(Me, code_ce, ld_recherche)

Que d'erreurs


jeudi 21 février 2008 à 10:31:16 | Re : Procédure dans un module puis l'appeler

4rocky4

J'ai résolu mon problème.
je vous remercie.


jeudi 21 février 2008 à 11:05:00 | Re : Procédure dans un module puis l'appeler

MPi

Et comment as-tu résolu ?

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI


jeudi 21 février 2008 à 14:01:11 | Re : Procédure dans un module puis l'appeler

4rocky4

J'ai mis cette ligne à la place :

rs.FindFirst "[" & champ & "] = " & Str(Nz(frm(liste), 0))

et voilà ... :)



1 2

Cette discussion est classé dans : module, rs, procédure, appeler, ld


Répondre à ce message

Sujets en rapport avec ce message

APPELER PROCEDURE MODULE CLASSE [ par spike62300 ] Bonjour,  j'ai décidé de remettre de l'ordre dans mon programme. Pour cela je créé des modules de classe pour chaque famille de produit dont je dispos Appel Sub dans autre macro [ par tonton33650 ] Bonjour a tous,Question certainement basique. Je travaille en VBA sur une base de donnees Access et je cherche a appeler un module que j'ai declare en Passage de (Me) [ par Gringoire2004 ] Bonjour, j'aimerais savoir la synthaxe complète utilisée pour passer une Form entière à un processus situé dans un module.Le nom du Sub est Victoire a Appeler une procédure VBscript à Partir de JavaScript [ par romantiques ] Bonjour,Est il possible d'appeler une procédure VBScript à partir d'une procédure JavaScript.J'écris du code Html utilisant du JavaScript pour animer Sub friend dans un module de classe [ par Polack77 ] Bonjour, J'ai un petit problème avec une procédure dans un module de classe. N'arrive pas à la déclarer correctement<img src="/imgs2/sm ACCESS VBA - Affecter le nom de la procédure en cours dans une variable [ par JM247L ] Bonjour,Pour la mise en forme d'une gestion d'erreur dans une application Access, je souhaiterai pouvoir récupérer dans une variable le nom de la proc Appeler une procédure située sur autre page [ par FBVLV ] Bonjour,Sur une forme unique (Form1.vb), j'ai placé un TabControl (TabControl1) avec deux TabPage (TabPage1 et TabPage2) Je souhaite lancer une pro Procédure commune [ par philippe ] Voilà mon problème :J'ai plusieurs forms sur lesquels il y a des textbox et des combobox avec des index.Je voudrai créer une procédure dans un module appel de procédure [ par PatLogan ] Bonjour,Je n'arrive pas à appeler une procédure avec arguments si elle fait partie d'un autre classeur.Est-ce que c'est une histoire de module de clas Appel d'une procédure d'affichage d'image dans un Module [ par Bouboutch ] El BouboutchHello !!Voici mes problèmes :Number ONE :Dans une FORM_01, j'appelle la procédure AFFICHAGE_IMAGE définie dans le module MODULE. AFFICHAGE


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,234 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.