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 :

[Form][VBA]Créer 1 procédure suivi d'une autre 3 sec plus tard pour même action


Sujet :

IHM

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 67
    Points : 75
    Points
    75
    Par défaut [Form][VBA]Créer 1 procédure suivi d'une autre 3 sec plus tard pour même action
    Voici mon problème, j'ai un formulaire de recherche et un formulaire de Sasie. Le formulaire de Saisie est le plus important, j'ai un bouton sur lequel je clic et me renvois a mon formulaire de recherche. Je fait la recherche trouve ce que j'ai de besoin et je double clik sur l'enregistrement que je veux obtenir celui ci me revoie automatiquement à mon formulaire Saisie avec le bon enregistrement de ma recherche. Mais mon Formulaire Recherche reste toujours ouvert en Background. Je met a disposition le code entier du formulaire de recherche
    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
    Option Compare Database
     
    Private Sub chkFabricant_Click()
     
    If Me.chkFabricant Then
        Me.txtRechNomDuFabricant.Visible = False
    Else
        Me.txtRechNomDuFabricant.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
     
    Private Sub chkUsagePrincipal_Click()
     
    If Me.chkUsagePrincipal Then
        Me.cmbRechUsagePrincipal.Visible = False
    Else
        Me.cmbRechUsagePrincipal.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
    Private Sub chkNomCommun_Click()
     
    If Me.chkNomCommun Then
        Me.txtRechNomCommun.Visible = False
    Else
        Me.txtRechNomCommun.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
    Private Sub chkNomGénérique_Click()
     
    If Me.chkNomGénérique Then
        Me.txtRechNomGénérique.Visible = False
    Else
        Me.txtRechNomGénérique.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
     
    Private Sub chkEndroit_Click()
     
    If Me.chkEndroit Then
        Me.cmbRechEndroit.Visible = False
    Else
        Me.cmbRechEndroit.Visible = True
    End If
     
    RefreshQuery
     
    End Sub
     
    Private Sub cmbRechUsagePrincipal_BeforeUpdate(Cancel As Integer)
     
    RefreshQuery
     
    End Sub
     
    Private Sub cmbRechEndroit_BeforeUpdate(Cancel As Integer)
     
    RefreshQuery
     
    End Sub
     
     
    Private Sub Form_Load()
     
    Dim ctl As Control
     
    For Each ctl In Me.Controls
        Select Case Left(ctl.Name, 3)
            Case "chk"
                ctl.Value = -1
     
            Case "lbl"
                ctl.Caption = "- * - * -"
     
            Case "txt"
                ctl.Visible = False
                ctl.Value = ""
     
            Case "cmb"
                ctl.Visible = False
     
        End Select
    Next ctl
     
    Me.lstResults.RowSource = "SELECT CodMedia, NomDuFabricant, NomGénérique, NomCommun, Endroit FROM T_Produits_Info_Complet;"
    Me.lstResults.Requery
     
    End Sub
     
    Private Sub RefreshQuery()
    Dim SQL As String
    Dim SQLWhere As String
     
    SQL = "SELECT CodMedia, NomDuFabricant, NomGénérique, NomCommun, Endroit FROM T_Produits_Info_Complet Where T_Produits_Info_Complet!CodMedia <> 0 "
     
    If Not Me.chkFabricant Then
        SQL = SQL & "And T_Produits_Info_Complet!NomDuFabricant like '*" & Me.txtRechNomDuFabricant & "*' "
    End If
    If Not Me.chkUsagePrincipal Then
        SQL = SQL & "And T_Produits_Info_Complet!UsagePrincipal = '" & Me.cmbRechUsagePrincipal & "' "
    End If
    If Not Me.chkNomCommun Then
        SQL = SQL & "And T_Produits_Info_Complet!NomCommun like '*" & Me.txtRechNomCommun & "*' "
    End If
    If Not Me.chkNomGénérique Then
        SQL = SQL & "And T_Produits_Info_Complet!NomGénérique like '*" & Me.txtRechNomGénérique & "*' "
    End If
    If Not Me.chkEndroit Then
        SQL = SQL & "And T_Produits_Info_Complet!Endroit = '" & Me.cmbRechEndroit & "' "
    End If
     
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
     
    SQL = SQL & ";"
     
    Me.lblStats.Caption = DCount("*", "T_Produits_Info_Complet", SQLWhere) & " / " & DCount("*", "T_Produits_Info_Complet")
    Me.lstResults.RowSource = SQL
    Me.lstResults.Requery
     
    End Sub
     
    Private Sub lstResults_DblClick(Cancel As Integer)
    DoCmd.OpenForm "Saisie", acNormal, , "[CodMedia] = " & Me.lstResults
     
    End Sub
     
     
    Private Sub txtRechNomDuFabricant_BeforeUpdate(Cancel As Integer)
     
    RefreshQuery
     
    End Sub
     
    Private Sub txtRechNomCommun_BeforeUpdate(Cancel As Integer)
     
    RefreshQuery
     
    End Sub
     
    Private Sub txtRechNomGénérique_BeforeUpdate(Cancel As Integer)
     
    RefreshQuery
     
    End Sub
     
     
    Private Sub Bout_F_recherche_Aide_Click()
    On Error GoTo Err_Bout_F_recherche_Aide_Click
     
        Dim stDocName As String
        Dim stLinkCriteria As String
     
        stDocName = "F_aide"
        DoCmd.OpenForm stDocName, , , stLinkCriteria
     
    Exit_Bout_F_recherche_Aide_Click:
        Exit Sub
     
    Err_Bout_F_recherche_Aide_Click:
        MsgBox Err.Description
        Resume Exit_Bout_F_recherche_Aide_Click
     
    End Sub
    J'ai essayé quelques trucs pour tenter de fermer le formulaire mais je me suis rendu compte que je perdais l'informations et qu'il m'indiquait une erreur. Alors j'ai remis sa à son état d'origine. J'aimerais qu'il ferme après 3 sec exemple pour que le code est le temps de faire son travail . Entk je sais pas si mes explications sont clairs.

    Et voici le code pour l'ouverture du Formulaire Saisie
    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
    Private Sub Form_Open(Cancel As Integer)
    Forms![Saisie].OrderBy = "[NomGénérique]"
    Forms![Saisie].OrderByOn = True
    listeTrouvez = [NATO #]
    NATO.SetFocus
    End Sub
     
    Private Sub listeTrouvez_AfterUpdate()
     
        Dim rs As Object
     
        Set rs = Me.Recordset.Clone
        rs.FindFirst "[NATO #] = '" & Me![listeTrouvez] & "'"
        If Not rs.EOF Then Me.Bookmark = rs.Bookmark
    End Sub

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France, Drôme (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Bonjour,

    Je te propose d'utiliser l'évènement Form_Timer() de ton formulaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub Form_Timer()
        Me.TimerInterval = 0                    ' arret de la minuterie
        DoCmd.Close acForm, Me.Name             ' fermeture du formulaire
    End Sub
    En mode création, tu mets 3000 dans Time (ou bien minuterie, juste en dessous de l'évènement). Le temps est ici en ms.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 67
    Points : 75
    Points
    75
    Par défaut
    L'action du timer doit ce faire lorsque l'utilisateur a double cliquer sur sa séléction et qu'il le renvois au formulaire Saisie. Si j'utilise l'évènement Form_Timer() il ferme le formulaire dans 3 sec et ne laisse pas asser de temps à l'utilisateur de faire son choix. J'aimerais que l'utilisateur puisse faire son choix et que par la suite le formulaire ( de recherche) ce ferme par la suite. Est t'il possible d'assigner une double fonction au double clic . soit d'ouvrir le formulaire saisie avec le filtre qui s'y rattache et aussi par la suite quelques secondes plus tard de fermer le formulaire de recherche ?

    Merci

  4. #4
    Membre expérimenté

    Profil pro
    Inscrit en
    Mars 2006
    Messages
    1 350
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 350
    Points : 1 701
    Points
    1 701
    Par défaut
    Bonsoir;

    Il me semble ne pas comprendre exactement ton besoin. On va essayer de faire avec mes déductions.

    Tu donnes le focus à ton autre formulaire en lui transmettant ta requête. Jusque là il semble que tu ne rencontres pas de soucis.

    Tu peux lui dire d'attendre à l'aide de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DoEvents
     'cette boucle sert à créer une attente entre les deux affectations
    For i = 1 To 10000000
    Next
    Tu redonnes le focus au formulaire que tu désires fermer
    etOu sans redonner le focus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.Close acForm, "F_TonForm"
    Cordialement.
    Questions techniques par MP
    Le peu que je sais, c'est à mon ignorance que je le dois.
    ...............................................................................Sacha Guitry

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2006
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Août 2006
    Messages : 67
    Points : 75
    Points
    75
    Par défaut Voici plus d'explications sur ma demande.
    j'ai deux formulaire , l'un ce nomme Formulaire (F_Sasie) celui sert de formulaire principal. Celui ci doit rester toujours ouvert car il permet plusieurs options dans ma base telle que historique de commande , afficher des états etc... et il contient plus de 15000 entrées. Mais dans ce même formulaire (F_Sasie) j'ai un bouton qui me permet d'ouvrir le un formulaire de recherche ( celui de caféine ) pour me permettre de trouvé un enregistrement précis. Une fois que je clique sur le bouton (les petites jumelles) ce trouvant dans mon formulaire (F_Sasie) il m'ouvre le formulaire de recherche ( F_Rercherche) et me permet de trouvé la sélection voulue. Une fois la séléction trouvé je double clique sur cette dernière ( dans le formulaire F_Recherche ). Qui me renvois automatiquement dans le formulaire Saisie avec la bonne séléction. Mais le problème est que le formulaire de recherche reste ouvert en backgroud dans la base de donnée. J'aimerais que le formulaire de recherche ce ferme automatiquement lorsque celui ci me renvois dans mon formulaire Sasie. Je sais pas si ma demande semble être plus éclairé. Je joint une partie de ma base de données avec les formulaires en question.

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    OrangeBox et francishop t'ont donné la solution.

    Le module de code du formulaire F_Engin_Recherche doit contenir (entre autres):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private Sub Form_Open(Cancel As Integer)
        Me.TimerInterval = 0
    End Sub
     
    Private Sub Form_Timer()
        DoCmd.Close acForm, Me.Name, acSaveNo
    End Sub
     
    Private Sub lstResults_DblClick(Cancel As Integer)
        Me.TimerInterval = 100
        DoCmd.OpenForm "Saisie", acNormal, , "[CodMedia] = " & Me.lstResults
    End Sub
    Quand on clique sur la liste lstResults:
    (1) on "prévoit" de fermer F_Engin_Recherche dans 100ms,
    (2) puis le focus est passé au formulaire Saisie.

    100ms plus tard, le timer du formulaire F_Engin_Recherche se déclenche et exécute la procédure événementielle qui lui est associée.
    Cette procédure ferme le formulaire en prenant garde de le désigner expressément.

    Dans la fenêtre des propriétés du formulaire de recherche, vérifie que l'événement Sur minuterie est bien renseignée avec [Procédure événementielle].

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

Discussions similaires

  1. Appel d'une procédure à partir d'une autre form
    Par kroma23 dans le forum Langage
    Réponses: 2
    Dernier message: 02/01/2012, 21h02
  2. [VBA-E] plage de reference dans une autre feuille
    Par gruget dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 02/09/2009, 13h28
  3. Réponses: 4
    Dernier message: 26/04/2007, 09h03
  4. Réponses: 3
    Dernier message: 02/02/2007, 14h30
  5. Réponses: 2
    Dernier message: 26/06/2006, 10h27

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