Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/03/2011, 16h43   #1
Membre à l'essai
 
Inscription : novembre 2004
Messages : 50
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 50
Points : 21
Points : 21
Par défaut Problème de factorisation de code

Bonjour la communauté!
Voici mon pb:
dans une base access, j'ai trois formulaires qui contiennent le même code. Seul le nom du formulaire change.
Je veux donc mettre le code dans un module, l'appeler en lui transmettant le nom du formulaire, ce qui donne :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
Public Sub RefreshListe(NomDuForm As String)
    Dim db As DAO.Database
    Dim RS As DAO.Recordset
    Dim sqlSelect As String
 
    Set db = Application.CurrentDb
    sqlSelect = "SELECT * FROM Table1 ;"
    Set RS = db.OpenRecordset(sqlSelect)
    RS.MoveFirst
 
    Forms!NomDuForm.ControlList.RowSource = sqlSelect 
    Forms!NomDuForm.ControlList.Requery
 
End sub
Évidemment ça marche pas! Access geint en me disant qu'il ne connaît pas le formulaire NomduForm.
J'ai bien essayé un
Code :
1
2
3
4
5
6
7
8
 
Public Sub RefreshListe(NomDuForm As variant)
 
...
 
    Set MonForm = Forms!NomDuForm
    Forms!MonForm .ControlList.RowSource = sqlSelect 
    Forms!MonForm .ControlList.Requery
ça marche pas nom plus.
Comment faire pour transmettre non seulement le nom du formulaire mais aussi l'objet Formulaire?

Merci d'avance pour vous réponses ou pour des liens utiles.
Sellig60
sellig60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2011, 17h06   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 613
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 613
Points : 30 968
Points : 30 968
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Il ne faut pas passer le nom, mais le formulaire, ce qui deviendrait :

Code :
Public Sub RefreshListe(objFrm As Form)
et dans ton code

Code :
objFrm.ControlList.RowSource = sqlSelect
De plus, à quoi te sert ton recordset

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 27/03/2011, 17h10   #3
Membre actif
 
Homme Dominique
Gestion parc machine, assistance informatique, développement Access, Excel...
Inscription : février 2007
Messages : 130
Détails du profil
Informations personnelles :
Nom : Homme Dominique
Âge : 56
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Gestion parc machine, assistance informatique, développement Access, Excel...
Secteur : Service public

Informations forums :
Inscription : février 2007
Messages : 130
Points : 161
Points : 161
Bonjour.
Je ne comprend pas tout.
Ta procédure me semble devoir mettre à jour la source d'une liste déroulante dans 3 formulaire à alors pourquoi passer par du code et ne pas paramétrer directement chaque liste. De plus tu n'utilises pas le résultat de ta requête RS, ni ne clos les objets DAO.
Merci me préciser le but réel des formulaires et du code que tu désires mettre en module.
Cordialement, Dominique
PapouDomi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/03/2011, 17h31   #4
Membre à l'essai
 
Inscription : novembre 2004
Messages : 50
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 50
Points : 21
Points : 21
Par défaut Merci

Pour le code, j'ai pris celui de ma base et j'ai "élagué" mais trop ou pas assez pour aller plus vite. ce qui le rend incompréhensible!
Mais merci j'ai ma réponse.
Encore une fois developpez.net m'a aidé.
Vraiment super ce site et ses participants.
Sellig60
sellig60 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 22h18.


 
 
 
 
Partenaires

Hébergement Web