begin process at 2012 02 17 01:28:42
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBA

 > 

Procédure dans un module puis l'appeler


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Procédure dans un module puis l'appeler

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ée 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 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 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 VBA Appeler une procédure liée un bouton créé dynamiquement dont le nom est variable [ par GrandCactus ] Bonjour à tous, Je bloque sur un problème, peut être que certains pourront m'aider. J'ai créé un userform dont un contrôle créé des boutons de manièr 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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 9,953 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales