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

Macros et VBA Excel Discussion :

Question liée aux UserForm


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2009
    Messages : 11
    Par défaut Question liée aux UserForm
    Bonjour à tous,

    Est-il possible dès le lancement d'un UserForm de lancer un timer sans que cela bloque les actions utilisateurs dans le UserForm ?

    Je m'explique ...

    Voici mon code dans ThisWorkbook

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Private Sub Workbook_Open()
     
    ThisWorkbook.Application.Visible = False
     
    UserForm.Show
     
    Call Module.Execution
     
    End Sub
    Ce que je souhaiterai, c'est que le UserForm se lance et que si il n'y a aucune action d'un utilisateur dans le UserForm (Ex : clique sur un bouton) pendant 2min que celui ci se ferme et que la prochaine action soit Call Module.Execution dans ThisWorkbook

    Et inversement, le UserForm se lance et si l'utilisateur effectue une action dans celui ci (Ex : clique sur un bouton) avant le timer de 2min que le UserForm reste ouvert


    Je vous remercie par avance

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Salut,

    Une solution est de rester dans la routine UserForm_Activate() tant que l'une des conditions suivantes n'est pas remplie :
    - durée entre affichage de la fenêtre et heure actuelle < 2 minutes
    - l'utilisateur a cliqué sur un des boutons

    Pour que la USF reste réactive aux actions de l'utilisateur, on appellera DoEvents périodiquement dans la boucle d'attente.

    Pour ne pas mobiliser le CPU durant l'attente, on utilisation la fonction de l'API Windows Sleep(<delay en ms>).

    Note : tous l'évènement sur lesquels il faut arrêter la fermeture temporisée de l'USF doivent faire isUserAction = True
    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
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
     
    Private isUserAction As Boolean
     
    Private Sub CommandButton1_Click()
        isUserAction = True
    End Sub
     
    Private Sub UserForm_Activate()
        isUserAction = False
        Dim showDate As Date
        showDate = Now()
        Do
            DoEvents
            Sleep 100
            DoEvents
            If isUserAction Then Exit Do
        Loop While ((Now() - showDate) < TimeValue("00:02:00"))
     
        If Not isUserAction Then Hide
    End Sub

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2009
    Messages : 11
    Par défaut
    Salut BlueMonkey,

    Je te remercie non seulement pour ta réactivité mais aussi pour ta solution qui fonctionne parfaitement.

    En plus, tu as pris le temps de mettre en forme ton code donc cela m'a permis de bien comprendre le fonctionnement notamment de DoEvents.

    Bon week end

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 1 186
    Par défaut
    Content que ça fonctionne comme tu veux.
    Pour la mise en forme du code c'est un réflexe :
    ça ne coûte presque pas de temps à la saisie, et en fait gagner beaucoup à la relecture.

    Bon week-end également.

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

Discussions similaires

  1. Petite question liée aux structures
    Par progfou dans le forum C++
    Réponses: 9
    Dernier message: 24/04/2007, 13h46
  2. Erreur liée aux accents
    Par Mickael49 dans le forum Requêtes
    Réponses: 2
    Dernier message: 20/12/2006, 08h34
  3. Question quant aux objets statics
    Par jojob dans le forum Langage
    Réponses: 2
    Dernier message: 15/12/2006, 13h11
  4. Petite question liée au Javascript
    Par systemofaxav dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/03/2006, 14h29
  5. question quant aux possibilités FileObjectSystem
    Par guitza87 dans le forum ASP
    Réponses: 1
    Dernier message: 17/03/2006, 09h58

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