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

IHM Discussion :

Problème de rafraichissement de zone de liste [AC-2003]


Sujet :

IHM

  1. #1
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2012
    Messages : 80
    Points : 48
    Points
    48
    Par défaut Problème de rafraichissement de zone de liste
    Bonjour,

    Juste un petit conseil, qui doit être très simple, mais je constate des choses
    bizarre...

    J'ai un formulaire d'impression, avec 3 zones de liste :
    - type courriers
    - dossier concernés
    - destinataires (originaire d'une table alimentée par Vba)
    suivant le type de courrier et le dossier concerné, je veux afficher les bons
    destinataires.
    Cela fonctionne, cependant, le formulaire se ferme pour faire le rafraichissement !
    j'ai essayé plusieurs choses :
    - Me.zonedeliste.Requery
    - Me.zonedeliste.Refresh
    - rafraichissement du formulaire...
    pour l'instant, cela ne fonctionne pas...
    Auriez-vous une idée ?
    Un grand merci d'avance

  2. #2
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 079
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 079
    Points : 24 718
    Points
    24 718
    Par défaut
    Bonjour,
    Je ne comprends pas lorsque tu dis "le formulaire se ferme".

    C'est toi (le développeur) qui lui dis si il se ferme ou pas et non le contraire.

    Peux-tu nous en dire plus ?

    Cordialement,

  3. #3
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2012
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    Merci pour ta réaction...

    Et oui, le formulaire "frm_Courriers" se ferme alors que je n'ai pas l'impression de lui dire... lorsque j'utilise un bouton "Affiche noms" pour mettre à jour dans un premier temps mon sous-formulaire de destinataires.

    voici les lignes de codes....
    J'ai transformé la zone de liste "destinataires" par un sous-formulaire basé sur une table qui s'actualise suivant les choix dans les deux autres zones de liste

    Pour l'instant malgré des essais de rafraichissement du formulaire, et du
    sous formulaire... : requery, refresh
    cela ne donne rien !

    Merci pour les conseils, éclairages
    Plume27

    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
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    '-----------------------------------------------------------------------------------------
    Private Sub bnt_affiche_noms_DblClick(Cancel As Integer)
    '-------------------------------------------------------------
    ' mise à jour des noms de correspondants dans la table Correspondants
    ' sélection et impression des courriers
    '-------------------------------------------------------------
     
    'déclaration document
    Dim NomDocument As String
    Dim Doctype As String
    Dim NumAccord As Long
    Dim NumspécAccord As String
     
    'déclaration rédacteur
    Dim NomRédacteur As String
    Dim PrénomRédacteur As String
    Dim TélRédacteur As String
    Dim MélRédacteur As String
     
    'déclaration organisme
    Dim OrgNum As Long
    Dim OrgNom As String
    Dim OrgAdresse As String
    Dim OrgCodepostal As String
    Dim OrgVille As String
     
    'déclaration correspondant
    Dim Civilité As String
    Dim Nom As String
    Dim Prénom As String
    Dim Qualité As String
    Dim Organisation As String
     
    'déclaration variable x
    Dim i As Integer
    Dim j As Integer
    Dim Debut As String
    'déclaration pour prg Dao-Sql
    Dim V_Sql As String 'déclaration variable enregistrement Sql
     
    'initialisation
    i = 0
     
    If IsNull(Me.Liste_courriers.Value) Then
        MsgBox "Il faut sélectionner un modèle de courrier !", vbOKOnly, "Gestion des courriers"
        Exit Sub
    End If
     
    'récupération du modèle de courriers choisi
    NomDocument = Me.Liste_courriers.Value
    'MsgBox NomDocument
     
    Debut = Left(NomDocument, 2)
    'MsgBox Debut
    'si le document sélectionné est une notification de réception ou de diffusion de l'avis Cna
    If Debut = "02" Then
     
        Doctype = "Réception_notif"
     
        If IsNull(Me.Liste_dossiers.Value) Then
            MsgBox "Il faut sélectionner un dossier !", vbOKOnly, "Gestion des correspondants"
            Exit Sub
        Else
            'test quel est le type d'organisme EN, EJ ou ET
            EjNum = Me.Liste_dossiers.Column(5)
            If Not IsNull(EjNum) Then
     
                'Index = Me.Liste_dossiers.Value et récupération des données générales
                NumAccord = Me.Liste_dossiers.Column(0)
                NumspécAccord = Me.Liste_dossiers.Column(1)  'n° spéc accord pour le test : EN, ou EJ ou ET pour l'affichage des correspondants
                NomRedacteur = Me.Liste_dossiers.Column(2)
                'EjNum = Me.Liste_dossiers.Column(5)
                MsgBox "n°accord : " & NumAccord & vbCrLf & "n° spéc. : " & NumspécAccord & vbCrLf & "n°EJ : " & EjNum & vbCrLf & "Rédacteur : " & NomRedacteur & vbCrLf
     
                'récupération des données de l'organisme
                OrgNom = DLookup("[ej-raison_sociale]", "[tbl_Ej_Org]", "[ej-no_cna]=" & EjNum)
                OrgAdresse = Nz(DLookup("[ej-voie]", "[tbl_Ej_Org]", "[ej-no_cna]=" & EjNum))
                OrgCodepostal = DLookup("[ej-code_postal]", "[tbl_Ej_Org]", "[ej-no_cna]=" & EjNum)
                OrgVille = DLookup("[ej-commune_libelle]", "[tbl_Ej_Org]", "[ej-no_cna]=" & EjNum)
                MsgBox "Organisme : " & OrgNom & vbCrLf & "Adresse : " & OrgAdresse & vbCrLf & "Commune : " & OrgCodepostal & " - " & OrgVille
     
                'récupération des données du rédacteur
                'attention, quand la relation recherchée est basée sur du texte, la formulation du DLookup est modifiée !!!!
                NomRédacteur = DLookup("[Rédacteur_nom]", "[tbl_Rédacteur]", "[Rédacteur_nom]=""" & NomRedacteur & """")
                PrénomRédacteur = DLookup("[Rédacteur_prénom]", "[tbl_Rédacteur]", "[Rédacteur_nom]=""" & NomRedacteur & """")
                TélRédacteur = DLookup("[Rédacteur_tél]", "[tbl_Rédacteur]", "[Rédacteur_nom]=""" & NomRedacteur & """")
                MélRédacteur = DLookup("[Rédacteur_mél]", "[tbl_Rédacteur]", "[Rédacteur_nom]=""" & NomRedacteur & """")
                MsgBox "Nom rédacteur : " & NomRédacteur & vbCrLf & "Prénom : " & PrénomRédacteur & vbCrLf & "Tél. : " & TélRédacteur & vbCrLf & "Mél : " & MélRédacteur
     
                '------------------------------------------
                ' mise à jour d'une table "liste des correspondants"
                '-----------------------------------------------
                'ouvrir une table, la vider de tous ses enregistrements et lancer un programme pour alimenter la table
                'DoCmd.OpenTable "tbl_Correspondants"
     
                'empêche les demande de confirmation de s'afficher
                DoCmd.SetWarnings False
                'efface le contenu de la table, effacer tous les enregistrements
                DoCmd.RunSQL "DELETE * FROM tbl_Correspondants;"
                'rétablit les confirmations
                DoCmd.SetWarnings True
                'fermeture de la table
                DoCmd.Close
     
     
                'initialisation Dao
                Dim Base As DAO.Database
                Set Base = CurrentDb
                Dim Ajout01 As DAO.Recordset
                Set Ajout01 = Base.OpenRecordset("tbl_Correspondants", dbOpenTable)
     
                'récupération informations président EJ
                Civilité = DLookup("[president_civilite]", "[tbl_President]", "[ej-no_cna]=" & EjNum)
                Nom = DLookup("[president_nom]", "[tbl_President]", "[ej-no_cna]=" & EjNum)
                Prénom = DLookup("[president_prenom]", "[tbl_President]", "[ej-no_cna]=" & EjNum)
                Qualité = DLookup("[president_qualite]", "[tbl_President]", "[ej-no_cna]=" & EjNum)
                'MsgBox "Civilité : " & Civilité & vbCrLf & "Nom : " & Nom & vbCrLf & "Prénom : " & Prénom & vbCrLf & "Qualité : " & Qualité
     
                'passage en mode ajout
                Ajout01.AddNew
                Ajout01.Fields("Civilite").Value = Civilité
                Ajout01.Fields("Nom").Value = Nom
                Ajout01.Fields("Prenom").Value = Prénom
                Ajout01.Fields("Qualite").Value = Qualité
                Ajout01.Fields("Organisation").Value = " "
     
                'met à jour
                Ajout01.Update
     
                'récupération informations directeur EJ
                Civilité = DLookup("[direction_civilite]", "[tbl_Directeur]", "[ej-no_cna]=" & EjNum)
                Nom = DLookup("[direction_nom]", "[tbl_Directeur]", "[ej-no_cna]=" & EjNum)
                Prénom = DLookup("[direction_prenom]", "[tbl_Directeur]", "[ej-no_cna]=" & EjNum)
                Qualité = DLookup("[direction_qualite]", "[tbl_Directeur]", "[ej-no_cna]=" & EjNum)
                'MsgBox "Civilité : " & Civilité & vbCrLf & "Nom : " & Nom & vbCrLf & "Prénom : " & Prénom & vbCrLf & "Qualité : " & Qualité
     
                'passage en mode ajout
                Ajout01.AddNew
                Ajout01.Fields("Civilite").Value = Civilité
                Ajout01.Fields("Nom").Value = Nom
                Ajout01.Fields("Prenom").Value = Prénom
                Ajout01.Fields("Qualite").Value = Qualité
                Ajout01.Fields("Organisation").Value = " "
     
                'met à jour
                Ajout01.Update
     
                'compte des représentants syndicaux pour EJ
                Dim Ajout As DAO.Recordset
                'recherche informations dans table négociateurs
                Set Ajout = Base.OpenRecordset("tbl_Négociateurs")
     
                V_Sql = "INSERT INTO tbl_Correspondants([Civilite], [Nom], [Prenom] ,[Qualite], [Organisation]) "
                V_Sql = V_Sql & "SELECT [négociateur_civilité], [négociateur_nom], [négociateur_prénom], [négociateur_qualité], [négociateur_synd]"
                V_Sql = V_Sql & "FROM [tbl_Négociateurs] WHERE [ej-no_cna]=" & EjNum
                Base.Execute V_Sql
     
                Me.frm_Correspondants_sous_formulaire.Requery
     
            Else
                'à modifier par la suite
                Exit Sub
            End If
     
        End If
     
     
    End If
     
    'Libération des objets
    Ajout.Close
    Ajout01.Close
    Base.Close
    Set Ajout = Nothing
    Set Ajout01 = Nothing
    Set Base = Nothing
     
     
    End Sub

  4. #4
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 079
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 079
    Points : 24 718
    Points
    24 718
    Par défaut
    Ligne 102, 103 tu fermes bien l'objet courant.

    Tous ces Dlookup sur le même enregistrement d'une même table !!! ça tiendra pas lors des montées en charge de l'appli.

    Remplace les par une méthode DAO.
    Un Recordset avec SQL where ou avec findfirst est plus approprié.

    Il y a surement d'autres petites choses à reprendre.

    Cordialement,

  5. #5
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2012
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    Merci, comme quoi, on relis et re-relis... et on ne voit plus rien...
    la table se met bien à jour maintenant !

    En effet, j'ai beaucoup de données (venant de deux tables) à transférer dans un courrier, j'entends bien la remarque et ne savait pas que les Dlookup prennent de la mémoire...
    par contre, si je passe en Dao-RecordSet, il faut que je bascule les
    données dans une table intermédiaire... ???

    Un grand merci !
    Plume27

  6. #6
    Rédacteur/Modérateur
    Avatar de loufab
    Homme Profil pro
    Entrepreneur en solutions informatiques viables et fonctionnelles.
    Inscrit en
    Avril 2005
    Messages
    12 079
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Entrepreneur en solutions informatiques viables et fonctionnelles.
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2005
    Messages : 12 079
    Points : 24 718
    Points
    24 718
    Par défaut
    Oui le Dlookup est gourmand.

    Pourquoi une table intermédiaire ?
    Fais simplement usage du recordset.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    dim rst as recordset
    set rst = currentdb.openrecordset("Select * FROM tbl_Ej_Org WHERE [ej-no_cna]=" & EjNum,dbopensnapshot)
    OrgNom = rst.fields("ej-raison_sociale")
    ...
    rst.close
    set rst = nothing
    Idem pour ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ajout01.Fields("Civilite").Value = rst.fields("president_civilite")
    Cordialement,

  7. #7
    Membre du Club
    Femme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    80
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2012
    Messages : 80
    Points : 48
    Points
    48
    Par défaut
    Un grand merci !!

    Je vais essayer...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème dans état avec zone de liste
    Par medchok dans le forum IHM
    Réponses: 2
    Dernier message: 15/04/2014, 23h06
  2. Réponses: 1
    Dernier message: 11/12/2006, 11h14
  3. Problème d'insertion de zone de liste déroulante
    Par seurjer dans le forum Access
    Réponses: 2
    Dernier message: 09/10/2006, 12h21
  4. Réponses: 2
    Dernier message: 23/08/2006, 11h05
  5. Réponses: 1
    Dernier message: 19/01/2006, 18h54

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