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

VBA Access Discussion :

modifier les controles d'un formulaire depuis un autre formulaire


Sujet :

VBA Access

  1. #1
    Membre actif
    Formateur en informatique
    Inscrit en
    Janvier 2011
    Messages
    134
    Détails du profil
    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 134
    Points : 205
    Points
    205
    Par défaut modifier les controles d'un formulaire depuis un autre formulaire
    Bonjour,

    J'ai un formulaire (frmStage2) lié à une table, qui contient 2 ListBox indépendant
    La première listbox, ListeMois, contient une liste de dates.
    Quand je clique dessus elle met à jours la 2ieme, ListeStage, par un requery

    La 2ieme ayant comme sourcecontrol (elle se sert de la première liste):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT tblStage.IdStage, [ChuFormation] & " / " & [WebFormation] AS RefFormation, tblFormation.LibelleFormation
    FROM tblFormation INNER JOIN tblStage ON tblFormation.IdFormation = tblStage.IdFormationStage
    WHERE (((Format([DateAffectationStage],"mmm yyyy"))=[Formulaires]![frmStage2]![ListeMois]))
    ORDER BY tblStage.DateAffectationStage;
    et tout marche très bien ...

    Là où ça se complique :

    Depuis ce premier formulaire j'en ouvre un 2ieme qui me permet d'ajouter des données dans le premier ...

    et quand depuis le 2ieme je tente d'actualiser le premier et bien ça marche pas :

    code du 2ieme formulaire :

    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
    Private Sub CommandeAjouter_Click()
    
    On Error Resume Next
    
    'Ajout d'un l'enregistrement (ds la table du 1er formulaire) : ok
    DoCmd.SetWarnings False
    DoCmd.RunSQL "INSERT INTO tblStage ( IdFormationStage, DateAffectationStage ) SELECT " & Me.ListeFormation.Value & " AS NumForm, #" & Format(Me.TexteDate, "mm/dd/yyyy") & "# AS DateStage;"
    DoCmd.SetWarnings True
    
    strDate = Format(Me.TexteDate, "mmm yyyy")
    
    'Fermeture du 2ieme formulaire
    DoCmd.Close
    
    'maj de la source du 1er formulaire : ca marche
    Forms("frmStage2").Requery
    
    'maj de la premiere liste : ca marche
    Forms("frmStage2").ListeMois.Requery
    
    'sélection d'un élément de la 1ere liste : ca marche
    Dim x As Long
    For x = 0 To Forms("frmStage2").ListeMois.ListCount - 1
        If strDate = Forms("frmStage2").ListeMois.ItemData(x) Then
            Forms("frmStage2").ListeMois.Selected(x) = True
        End If
    Next x
    
    'maj  de la 2ieme liste ca marche pas
    Forms("frmStage2").ListeStage.Requery
    
    end sub
    si je veux que la 2ieme liste soit à jour je doit cliquer sur la 1ere ... et j'aurais voulu qu'elle soit à jour par le code ...


    Merci de votre aide

  2. #2
    Membre expérimenté Avatar de RobiPMS
    Homme Profil pro
    Conseiller psycho-pédagogique
    Inscrit en
    Octobre 2007
    Messages
    827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Conseiller psycho-pédagogique
    Secteur : Enseignement

    Informations forums :
    Inscription : Octobre 2007
    Messages : 827
    Points : 1 506
    Points
    1 506
    Par défaut
    Bonjour.

    Je pense qu'une des possibilités pour résoudre ce souci est d'attribuer la RowSource de la seconde liste au moment où elle reçoit le focus (plutôt que directement dans la propriété Source de la liste):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ListeStage_GotFocus()
    Me.ListeStage.RowSource = "SELECT tblStage.IdStage, [ChuFormation] & ' / ' & [WebFormation] AS RefFormation, tblFormation.LibelleFormation FROM tblFormation INNER JOIN tblStage ON tblFormation.IdFormation = tblStage.IdFormationStage WHERE (((Format([DateAffectationStage],'mmm yyyy'))=Forms![frmStage2]![ListeMois])) ORDER BY tblStage.DateAffectationStage"
    End Sub
    Je n'ai pas testé la syntaxe de ce code (tu devras peut-être chipoter un peu avec les ', ou avec le concaténage des deux champs ...) mais j'utilise régulièrement l'attribution de la source au moment de la réception du focus et cela règle en général tous les problèmes d'actualisation des listes, et accélère l'ouverture des formulaires qui en contiennent beaucoup (surtout en réseau).
    Cordialement
    N'oubliez pas de tagguer la discussion comme résolue si vous avez été aidé!
    Plus haut monte le singe, plus il montre son cul (Montaigne)
    Je ne réponds pas aux messages personnels concernant des questions discutées dans le forum.

  3. #3
    Membre actif
    Formateur en informatique
    Inscrit en
    Janvier 2011
    Messages
    134
    Détails du profil
    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Janvier 2011
    Messages : 134
    Points : 205
    Points
    205
    Par défaut
    Merci ...

    Au départ j'ai pensé que c'était à cause des requery qui auraient pu mal fonctionner sur un formulaire non actif ... c'est pour cela que je faisais un docmd.close ... mais non ...

    Puis j'ai inclus les fonctionnalités (controles et code) du 2ieme formulaire dans le premier ... ça marchait toujours pas.

    Enfin j'ai fini par appliquer la redéfinition du RowSource (la solution que tu viens de proposer ...) et là pas de pb.
    En tout cas je retiens l'idée de redéfinir les Combo au focus.

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

Discussions similaires

  1. Appeler un SUB d'un formulaire depuis un autre formulaire
    Par Zouzou1er dans le forum VBA Access
    Réponses: 7
    Dernier message: 24/08/2016, 15h00
  2. Comment modifier les champs d'une classe depuis une autre
    Par SuperJoker dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 19/06/2014, 11h28
  3. Réponses: 2
    Dernier message: 15/04/2010, 10h30
  4. [AC-2003] Fermer un formulaire depuis au autre formulaire
    Par moilou2 dans le forum IHM
    Réponses: 5
    Dernier message: 08/07/2009, 18h24
  5. Réponses: 1
    Dernier message: 11/10/2008, 10h22

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