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 :

fermeture/ouverture de Form ; appeler une sub d'un autre formulaire ?


Sujet :

VBA Access

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Points : 127
    Points
    127
    Par défaut fermeture/ouverture de Form ; appeler une sub d'un autre formulaire ?
    Bonjour à tous,
    ça fait un moment que je ne suis pas passé, étant plongé dans l'entrée de données. Cette étape franchie avec succès, grâce à vos aides successives, j'ai souhaité porter quelques améliorations à l'ensemble, et me voila confronté à un nouveau problème...

    Avant la fermeture/réouverture d'un formulaire, je cherche à actualiser une liste d'un autre formulaire, ayant pour source d'origine une liste de valeurs créée à partir de ce code, présent dans le formulaire à actualiser :
    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
     
    Private Sub Contrat()
    Dim rst1 As DAO.Recordset
    Dim rst2 As DAO.Recordset
    Dim laref As Integer
    Dim lasigna As Date
    Dim lechean As Date
    Dim lesspe As String
    Dim lstcontrat As String
     
     Set rst1 = CurrentDb.OpenRecordset("SELECT [TblRefContrat].[ContratRef], [TblRefContrat].[debut], [TblRefContrat].[fin] FROM TblRefContrat WHERE [TblRefContrat].[Société] = '" & Me.txtSociété & "'")
     
     While Not rst1.EOF
         laref = rst1("ContratRef")
         lasigna = rst1("debut")
         lechean = rst1("fin")
     
        Set rst2 = CurrentDb.OpenRecordset("SELECT [TblSpeContrat].[Spécialité] FROM TblSpeContrat WHERE [TblSpeContrat].[ContratRef] = " & laref & "")
     
        While Not rst2.EOF
            lesspe = rst2("Spécialité") & ", " & lesspe
            rst2.MoveNext
        Wend
        rst2.Close
        Set rst2 = Nothing
     
    lesspe = Left(lesspe, (Len(lesspe) - 2))
    lstcontrat = laref & ";" & lasigna & ";" & lechean & ";" & lesspe & ";" & lstcontrat
    lesspe = ""
     rst1.MoveNext
     Wend
     
     rst1.Close
     Set rst1 = Nothing
     
     lstcontrat = StrConv(lstcontrat, vbLowerCase)
     Me.lstContrats.RowSource = lstcontrat
     Me.lstContrats.Requery
    End Sub
    Dans mes recherches réflectives, j'envisageais deux solutions :

    1) Appeler la Sub du formulaire à actualiser.
    Problème : je n'y arrive pas.
    Il serait possible de créer un bouton invisible, sur le formulaire à actualiser, et de simuler un évènement sur celui-ci. Je n'ai pas trouvé comment, mais ça doit pouvoir se faire, non ?

    2) fermer et ré-ouvrir le formulaire à actualiser par ce code, avant de fermer/ouvrir le formulaire lançant l'actualisation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    DoCmd.Close acForm, "FrmDetails"
    DoCmd.OpenForm "FrmDetails", acNormal, , "[Société] = '" & Me.txtSociété.Value & "'"
    DoCmd.Close
    DoCmd.OpenForm "FrmContrat", acNormal, , , acFormAdd
    Là encore, quelques soucis : le formulaire FrmDetails se ferme bien, mais il ne s'ouvre plus après. Le formulaire FrmContrat, lui, ne bouge pas d'un pixel...


    J'ai envisagé une troisième solution, que je n'utiliserai qu'en dernier recours, du fait de sa lourdeur/laideur : copier le code de la Sub dans le formulaire lançant l'actualisation, en pensant à remplacer les Me. par Forms!FrmDetails.

    Voila, voila, si quelqu'un avait un début de piste pour me guider un peu dans mes recherche, ce serait sympathique de la partager !

  2. #2
    Expert éminent
    Avatar de LedZeppII
    Homme Profil pro
    Maintenance données produits
    Inscrit en
    Décembre 2005
    Messages
    4 485
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Maintenance données produits
    Secteur : Distribution

    Informations forums :
    Inscription : Décembre 2005
    Messages : 4 485
    Points : 7 759
    Points
    7 759
    Par défaut
    Bonsoir,

    pour appeler une Sub d'un formulaire, il faut déclarer cette dernière en Public Sub.
    Exemple, Sub dans FormulaireB
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub Contrat()
    ...
    End Sub
    FormulaireB étant ouvert:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms("FormulaireB").Contrat
    A+

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    206
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 206
    Points : 127
    Points
    127
    Par défaut
    Je me sens bête, je l'avais déjà lu quelque part en plus...
    Merci bien !

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

Discussions similaires

  1. [AC-2003] Appeler une fonction d'un autre formulaire
    Par 0sef40 dans le forum IHM
    Réponses: 7
    Dernier message: 07/06/2011, 09h30
  2. Comment appeler une procédure d'un autre formulaire.
    Par cmatias dans le forum Langage
    Réponses: 5
    Dernier message: 04/03/2008, 14h58
  3. Réponses: 2
    Dernier message: 04/04/2007, 18h30
  4. [vb.net]accéder à une sub d'un autre formulaire
    Par DebutantDotNet dans le forum Windows Forms
    Réponses: 8
    Dernier message: 14/03/2006, 11h54
  5. [VB.NET] Appeler une sub public dans un module de form
    Par SergeF dans le forum Windows Forms
    Réponses: 3
    Dernier message: 01/06/2004, 13h08

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