IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Rafraichir le contenu d'une listBox en fonction des saisies d'un sous écran


Sujet :

Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut Rafraichir le contenu d'une listBox en fonction des saisies d'un sous écran
    Bonjour à tous,

    La question du jour est la suivante :

    J'ai deux écrans : un écran avec des filtres (que j'ai réalisé grace aux tutos du forum d'ailleur ) qui me permet lorsque je lance la requête dynamique du filtre d'alimenter une liste box. Lorsque je clique sur une ligne de ma list box, je vois le détail de la ligne dans une autre fenêtre (ici dans mon cas je gère des incidents)...

    En fait mon second écran me permet aussi de créer des nouveaux éléments qui devraient sse retrouver dans les lists box du filtre de mon premier écran... Et c'est là mon problème en fait : je ne sais pas comment raffraichir le contenu des lists box de mon écran de sélection lorsqu'il reprend la main ?

    J'espère que ma question est claire. Sinon, surtout n'hésitez pas.

    Par avance merci.

    Marco.

  2. #2
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Salut,

    Les deux Forms sont ouverts, tu peux faire un Requery sur la Zone après l'ajout de données.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Salut Dolphy,

    Mercy de ta réponse. En fait oui les deux forms sont ouverts... Le problème c'est que selon le cas les combos ne sont pas toujours alimentées de la même manière : par exemple dans un cas je récupère juste une valeur et je fais un AddItem ou dans une boucle ou par ma requête via le RowSource.

    Ce qui se produit c'est qu'il ne vide pas forcément ce qui était présent au départ dans la combo et qu'il rajoute d'autres éléments dedans (j'ai deux fois la même liste successivement dans la même combo).

    En fait mon problème se situe plutôt à ce niveau. Désolé de n'avoir pas été plus clair au départ. Merci de ta réponse. Si jamais tu as une idée n'hésite pas.

    A bientôt.

    Marco.

  4. #4
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Ok,

    En gros ta mise à jour est ok mais tu le rendu n'est pas ok sur tes listes de valeurs.
    Soit tu n'ajoute que la nouvelle valeur du nouvel enregistrement.
    Soit (dans ton cas) vu que tu rajoute tout à chaque fois il faut que tu vide ta zone pour le re-rempli. Je crois qu'il y a une fonction qui permet cela mais je n'arrive plus à m'en souvenir. Sinon fait un boucle pour éffacer toute ta zone :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        For i = 0 To (Me.MaListe.ListCount - 1)
     
            Me.MaListe.RemoveItem (0)
     
        Next i
    Tu mets cette boucle avant de charger toutes tes valeurs dans tes zones.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Merci Dolphy,

    En fait je viens d'essayer et ça n'a as marché.

    Merci de ton aide. Est ce que tu aurais une autre idée ?

    Marco.

  6. #6
    Expert éminent sénior
    Avatar de Dolphy35
    Homme Profil pro
    Responsable Systemes d'Information
    Inscrit en
    Octobre 2004
    Messages
    4 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable Systemes d'Information
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2004
    Messages : 4 373
    Points : 11 218
    Points
    11 218
    Par défaut
    Où as-tu mis le code ?

    Dis moi sinon le rendu et ce qui ne va pas.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 481
    Points : 165
    Points
    165
    Par défaut
    Bonjour Dolphy,

    Désolé de te répondre aussi tard. Merci pour ton aide. Finalement j'ai fini par trouver.

    Alors au niveau du formulaire appelant ("liste des incidents"), qui contient un filtre (requête dynamique) qui permet de générer une liste :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
     
     
     
    Private Sub Form_Activate()
        Call Form_Load
    End Sub
     
    Private Sub Form_Load()
     
    On Error GoTo ErrHandler
     
        Dim StrArgs As String
        Dim rs      As DAO.Recordset
        Dim db      As DAO.Database
        Dim SQL     As String
        Dim I       As Long
     
        If Not IsNull(Me.OpenArgs) Then
            StrArgs = Me.OpenArgs
            StrDroits = Split(StrArgs, "¤")(0)
            StrRegion = Split(StrArgs, "¤")(1)
            StrStatut = Split(StrArgs, "¤")(2)
            StrUser = Split(StrArgs, "¤")(3)
        Else
            Exit Sub
        End If
     
        '1) Vidage des combos
        '********************
        Me.CboNumIncident.RowSourceType = "Liste valeurs"
        For I = 0 To (Me.CboNumIncident.ListCount - 1)
            Me.CboNumIncident.RemoveItem (0)
        Next I
        Me.CboRegion.RowSourceType = "Liste valeurs"
        For I = 0 To (Me.CboRegion.ListCount - 1)
            Me.CboRegion.RemoveItem (0)
        Next I
        Me.CboSite.RowSourceType = "Liste valeurs"
        For I = 0 To (Me.CboSite.ListCount - 1)
            Me.CboSite.RemoveItem (0)
        Next I
        Me.CboVille.RowSourceType = "Liste valeurs"
        For I = 0 To (Me.CboVille.ListCount - 1)
            Me.CboVille.RemoveItem (0)
        Next I
     
        '2 ) Rechergement des combos
        '***************************
        'Region
        SQL = "select distinct Region.NomRegion from Region order by Region.NomRegion"
        Set db = DBEngine.Workspaces(0).Databases(0)
        Me.CboRegion.RowSourceType = "Liste valeurs"
        Me.CboRegion.AddItem ""
        If StrRegion <> "NAT" Then
            Me.CboRegion.AddItem StrRegion
        Else
            Me.CboRegion.AddItem "-Tous-"
            Set rs = db.OpenRecordset(SQL, DB_OPEN_SNAPSHOT)
            While Not rs.EOF
                If Not IsNull(rs!NomRegion) Then
                    Me.CboRegion.AddItem rs!NomRegion
                End If
                rs.MoveNext
            Wend
        End If
     
        'Ville
        If StrRegion = "NAT" Then
            SQL = " select ville.ville, 2 as Position from ville "
            SQL = SQL & " union"
            SQL = SQL & " select '-Tous-' as ville, 1 as Position from ville"
            SQL = SQL & " union"
            SQL = SQL & " select '' as ville, 0 as Position from ville"
            SQL = SQL & " order by Position, ville"
        Else
            SQL = "select ville.ville, 1 as Position from Ville where "
            SQL = SQL & BuildCriteria("Ville.Region", dbText, StrRegion)
            SQL = SQL & " union"
            SQL = SQL & " select '' as ville, 0 as Position from ville"
            SQL = SQL & " order by Position, ville"
        End If
        Me.CboVille.RowSourceType = "Table/Query"
        Me.CboVille.RowSource = SQL
     
        'Site
        If StrRegion = "NAT" Then
            SQL = " select Site.Site, 2 as Position from Site "
            SQL = SQL & " union"
            SQL = SQL & " select '-Tous-' as Site, 1 as Position from site"
            SQL = SQL & " union"
            SQL = SQL & " select '' as Site, 0 as Position from site"
            SQL = SQL & " order by Position, Site"
        Else
            SQL = "select Site.Site, 1 as Position from Site,Ville where Site.Ville=Ville.Ville "
            SQL = SQL & "and " & BuildCriteria("Ville.Region", dbText, StrRegion)
            SQL = SQL & " union"
            SQL = SQL & " select '' as Site, 0 as Position from Site"
            SQL = SQL & " order by Position, Site"
        End If
     
        Me.CboSite.RowSourceType = "Table/Query"
        Me.CboSite.RowSource = SQL
     
        'Incident
        Me.CboNumIncident.RowSourceType = "Liste valeurs"
        Me.CboNumIncident.AddItem ""
        SQL = "select distinct incident.numincident from incident, site, ville" & _
            " where incident.numsite = site.site" & _
            " and site.ville = ville.ville "
        If StrRegion <> "NAT" Then
            SQL = SQL & " and ville.region = '" & StrRegion & "'"
        Else
            Me.CboNumIncident.AddItem "-Tous-"
        End If
        SQL = SQL & "order by incident.numincident"
        Set rs = db.OpenRecordset(SQL, DB_OPEN_SNAPSHOT)
        While Not rs.EOF
            If Not IsNull(rs!NumIncident) Then
                Me.CboNumIncident.AddItem rs!NumIncident
            End If
            rs.MoveNext
        Wend
     
    ExitHandler:
        Set rs = Nothing
        Set db = Nothing
        Exit Sub
     
    ErrHandler:
    'Resume
        MsgBox Err.Description, vbExclamation, CstAppName
        Resume ExitHandler
     
    End Sub
    Et au niveau de la fiche incident (formulaire "détail") :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
     
     
    Private Sub Form_Unload(Cancel As Integer)
    On Error GoTo ErrHandler
     
        Form_FrmListeDesIncidents.LstResultQuery.Requery
     
    ExitHandler:
        Exit Sub
     
    ErrHandler:
        MsgBox Err.Description, vbExclamation, CstAppName
        Resume ExitHandler
     
    End Sub
    Je ne sais plus si il manque quelquechose. Qu'est ce que tu en penses ? Et ah oui est ce qu'iol manque des choses ? Est il possible de faire un coloriage syntaxique du code sur le forum ?

    A bientôt amigo.

    Marco.

Discussions similaires

  1. rafraichir le contenu d'une listbox
    Par alexlevenere dans le forum C#
    Réponses: 2
    Dernier message: 19/02/2008, 11h41
  2. Inserer le contenu d'une listbox dans une feuille
    Par PascGuil dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 09/08/2007, 16h13
  3. [Access2003] Exporter le contenu d'une listbox vers excel
    Par hoaxpunk dans le forum VBA Access
    Réponses: 1
    Dernier message: 24/05/2007, 16h56
  4. Imprimer le contenu d'une listbox
    Par djidanestribbal dans le forum IHM
    Réponses: 4
    Dernier message: 23/02/2007, 12h30
  5. Réponses: 1
    Dernier message: 27/05/2006, 23h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo