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 :

Faire tourner une procédure pendant la durée du timer d' un formulaire


Sujet :

Access

  1. #1
    Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2014
    Messages : 70
    Points : 46
    Points
    46
    Par défaut Faire tourner une procédure pendant la durée du timer d' un formulaire
    Bonjour,

    J' ouvre l' application access en affichant un formulaire de présentation de l' application pendant quelques secondes.
    Au démarrage de l' application, je dois retrouver quelques variables dans une table de paramètres qui me serviront pendant toute l' application. J' ai donc créer une procédure pour cela et cela fonctionne.
    Ce que je voudrais faire, afin de ne pas perdre de temps inutile, c' est que cette procédure tourne pendant l' affichage du formulaire de présentation.

    Il faudrait donc que l' application ouvre le formulaire de présentation.
    Que pendant cet affichage, la procédure retrouvant les paramètres tourne.
    Et que lorsque le temps d' affichage se termine, l' application continue comme avant, mais en ayant déjà retrouvé les paramètres.
    Je ne vois pas comment faire.

    Merci de m' aider
    Cordialement
    Daniel

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Bonsoir

    J'ai peut-être mal compris, mais je ne vois pas la difficulté.
    Il suffit
    - d'ouvrir le formulaire de présentation dès le début du code de la procédure de calculs, mais avant de les lancer
    - de le fermer en fin de code
    Et tu n'as pas besoin de timer puisque la fermeture s'effectue après les calculs.

    Titi95
    Un problème bien posé est à moitié résolu

  3. #3
    Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2014
    Messages : 70
    Points : 46
    Points
    46
    Par défaut
    J' ai dû mal m' expliquer.
    J' affiche un formulaire d' accueil pendant une période déterminée. Ce formulaire n' a aucun autre but que d'être afficher pendant la période (disons 3 ou 4 seconde).
    Ce que je voudrais c' est que pendant ce temps d' affichage une procédure s' effectue.

    Cordialement
    Daniel

  4. #4
    Membre éprouvé

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Novembre 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 904
    Points : 1 229
    Points
    1 229
    Par défaut
    Bonjour

    Essaie l'inverse, comme je te l'ai proposé.
    Dans ton Sub de calculs :
    - ouvre tout de suite, dès le début du code, le formulaire de présentation, avant de lancer les calculs
    - ferme le en fin de code, donc après les calculs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Public Sub Toto()
      DoCmd.OpenForm "NomFormulaire"
    ' Calculs
    '...
      DoCmd.Close acForm, "NomFormulaire"
    End sub
    Et ceci sans Timer.
    Le formulaire restera ouvert "le temps qu'il faut" pendant l’exécution des calculs. C'est bien cela que tu souhaites ?

    Titi95
    Un problème bien posé est à moitié résolu

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    La solution de titi95 semble la meilleur car ton formulaire sera sur de rester ouvert le temps qu'il faut.

    Sinon si tu tiens à procéder comme tu le décris, tu peux utiliser l'événement timer.
    En mémorisant la date de début à l'ouverture et la comparant avec la date/heure courante (now()) tu peux déterminer que x secondes se sont écoulées et décider de fermer le formulaire. Note que si tu avais un calcul en cours à ce moment il sera sauvagement interrompu et les résultats risques de ne pas être ceux que tu veux.

    Ici un exemple de code qui fait cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    dim m_Debut as dateHeure.
     
    private sub Form_Load()
       m_debit=now()
       'Ici tes calculs qui seront interrompus par la fermeture
    end sub
     
    Private Sub Form_Timer()
     
        If DateDiff("s", m_Debut, Now()) > 4 Then
           DoCmd.Close acForm, Me.Name
        End If
     
    End Sub
    avec une propriété de Minuterie égale à 1000 (1 seconde).

    Il y a apparement la possibilité de lancer un threat (une exécution en parallèle) en VBA qui évireait que tes calculs soient interrompus mais ce n'est d'après ce que j'ai lu pas très fiable ni simple.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Membre du Club
    Homme Profil pro
    Retraité
    Inscrit en
    Septembre 2014
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2014
    Messages : 70
    Points : 46
    Points
    46
    Par défaut
    Bonjour,

    Merci de vos réponses.
    En effet, je peux faire comme cela, même si cela ne correspond pas tout à fait à ce que je pensais pour diverses raisons trop difficiles et trop longues à expliquer ici.
    Je peux peut être poser la question autrement:
    Lorsque j' ouvre l' application, le formulaire de démarrage déclaré dans les options est donc un formulaire de présentation qui s' affiche pendant le temps déterminé dans la propriété timer et puis se ferme et ouvre le formulaire du menu principal.
    Ce que je pensais c' était lancer ma procédure lors d' un évènement du formulaire de démarrage sans pour autant augmenter le temps d' affichage; par exemple sur ouverture...
    La question serait alors; Quel évènement choisir pour que cette procédure n' allonge pas le temps du timer et tourne donc en parallèle?

    Cordialement
    Daniel

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Acces n'est pas vraiment multitache au niveau du VBA.

    Si ton code n'est pas exécuté par le formulaire "splash", tu peux peut-être utiliser la procédure que je t'ai suggéré pour fermer le formulaire après x secondes. Bien que je ne l'ai jamais testé cela pourait marcher.

    • Donc tu ouvres le formulaire "splash" avec sa procédure sur formulaire.
    • Tu lance les caculs.
      Si tu as des calculs longs pense à ajouter des DoEvents dans ton code car quand VBA tourne il ne rend pas la main et les événements timer sont simplement ignorés.
    • Au bout de X seconde le système devrait fermer le formulaire.


    Mais à mon avis la solution de titi95 est la plus simple.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. Faire tourner une sphere
    Par harris_macken dans le forum OpenGL
    Réponses: 9
    Dernier message: 26/06/2006, 08h46
  2. [VB6] Faire tourner une appli en tache non bloquante
    Par hirochirak dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 01/06/2006, 11h56
  3. faire tourner une commande dos sous application java
    Par Terminator dans le forum API standards et tierces
    Réponses: 22
    Dernier message: 02/05/2006, 22h33
  4. Faire tourner une Application en Taches de fond
    Par ArkAng3 dans le forum MFC
    Réponses: 3
    Dernier message: 26/08/2005, 14h06

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