Forum des développeurs  

Le forum de référence en programmation et développement. Articles, cours et tutoriels du débutant au chef de projet et DBA confirmé.
Précédent   Forum des développeurs > Hardware, Systèmes et 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.

Réponse
 
Outils de la discussion
Vieux 05/10/2008, 19h14   #1 (permalink)
Invité de passage
 
Date d'inscription: octobre 2008
Localisation: Lille
Messages: 4
Envoyer un message via MSN à Aureli
Par défaut rafraichir formulaire avec critere (liste déroulante)

Bonjour,
J'ai un formulaire, relié à une table, dont un des champs est une liste déroulante.

Je souhaite rafraichir les champs du formulaire et n'afficher que les enregistrements correspondant au critère séléctionné de ma liste.

dans l'évènement "on change", j'ai mis le code suivant :
Code :
Private Sub RegionAdherent_Change()
Dim strTable As String, strField As String, strCriteria As String, strSql As String
    Dim Criter As Variant
 
    strTable = "T1Adherents"         ' recupère le nom de la table
    strField = "RegionAdherent"         ' recupère le nom du champ
 
    ' compose le critere de recherche
    strCriteria = strTable & "." & strField & " = " & Me.RegionAdherent
    
 
    ' construit la requête sql
    strSql = strTable & ".*"
    strSql = strSql & " FROM " & strTable
    strSql = strSql & " WHERE ((" & strCriteria & "));"
    
 
    Me.Query = strSql  ' affecte sql a lst_Resultat
    Me.Requery
    Me.Refresh
End Sub

Il ne me rafraichit rien, m'affiche toujours tous mes enregistrements
Aureli est déconnecté   Envoyer un message privé Réponse avec citation
Vieux 06/10/2008, 16h25   #2 (permalink)
Rédacteur

 
Avatar de argyronet
 
Date d'inscription: mai 2004
Localisation: Dans une bulle d'air, voyons...
Messages: 2 082
Envoyer un message via MSN à argyronet
Par défaut

Bonjour,

Dans l'absolu, cette routine suffit amplement :
Code :
 
Private Sub RegionAdherent_AfterUpdate()
    Me.RecordSource = "SELECT * FROM T1Adherents WHERE RegionAdherent = " & _
        Me!RegionAdherent & ";"
End Sub
 
Avec un peu de zèle tu peux écrire :
Code :
 
Private Sub RegionAdherent_AfterUpdate()
Dim lngCountBefore                                          As Long
    If Not IsNull(Me.RegionAdherent) Then
        lngCountBefore = DCount("*", "T1Adherents", "[RegionAdherent]=" & _
            Me!RegionAdherent)
        If lngCountBefore Then
            Me.RecordSource = _
                "SELECT * FROM T1Adherents WHERE RegionAdherent = " & _
                Me!RegionAdherent & ";"
        Else
            MsgBox "Aucun enregistrement ne correspond à cette région !", _
                vbExclamation
        End If
    End If
End Sub
 
Argy

P.S. Ta procédure initila n'étant pas générique, ne perds pas de temps à créer des variable pour définir ta table et ton champ. Comme tu le vois, une seule ligne de code suffit...
__________________
Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment...

Web Site@Mail
Livres : VBA pour OFFICE 2007 et MICROSOFT ACCESS 2007
Tutoriels : Créer un gestionnaire de Post-It pour vos applications Access et Synchroniser 2 zones de liste dans un formulaire
MDB Viewer : Visionneuse Access v3.0
argyronet est déconnecté   Envoyer un message privé Réponse avec citation
Réponse

Précédent   Forum des développeurs > Hardware, Systèmes et Logiciels > Microsoft Office > Access > VBA Access

 
Offres d' emploi informatique sur Lesjeudis.com


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are non
Pingbacks are non
Refbacks are non
Navigation rapide


Fuseau horaire GMT +1. Il est actuellement 22h24.


Publiez vos articles, tutoriels et cours et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones. Nous contacter
Copyright 2000-2008 www.developpez.com - Legal informations