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 :

Fermer Userform après délai


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 2
    Par défaut Fermer Userform après délai
    Bonjour à tous,
    après avoir parcouru ce forum (et d'autres) je n'ai pas réussi à trouver une solution à mon problème.
    Pour un projet, je dois créer un jeu type Fight List pour ceux qui connaissent. Le joueur doit entrer un maximum de mots en rapport avec un thème donné, le tout en un temps limité.
    Le problème c'est que je ne sais pas comment faire pour que l'Userform où le joueur entre ses réponses se ferme au bout d'une minute, sans que cela ne bloque les actions (saisie et affichage des mots). J'avais cru trouver un solution via des procédures mais je n'arrive pas à inclure l'utilisation du bouton de validation...

    Quelqu'un aurait-il une idée ?

    Je laisse ici le code de mon Userform

    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
    Option Explicit
    Private theme As Integer
    Private score As Integer
    Private reps(1000) As Integer
    Private nbReps As Integer
     
    Public Property Let setTheme(themeEnCours As Integer)
        theme = themeEnCours
        LabelTheme.Caption = Sheets("reponses").Cells(1, theme)
    End Property
     
    Public Property Get recupScore()
        recupScore = score
    End Property
     
    Private Sub UserForm_Initialize()
     
        theme = 13
        score = 0
        nbReps = 0
     
            With LabelTheme
                .Object.Caption = Sheets("reponses").Cells(1, theme)
                .Font.Name = "Times New Roman"
                .Font.Size = 14
                .Left = 12
                .Top = 6
                .Width = 396
                .Height = 30
                .TextAlign = 2
            End With
     
            With ListBoxReponses
                .Font.Name = "Times New Roman"
                .Font.Size = 10
                .Left = 12
                .Top = 60
                .Width = 400
                .Height = 321
                .ColumnCount = 3
                .ColumnWidths = "130;150"
                .TextAlign = 2
            End With
     
            With CommandButtonValider
                .Object.Caption = "Valider"
                .Font.Name = "Times New Roman"
                .Font.Size = 10
                .Left = 336
                .Top = 384
                .Width = 76
                .Height = 24
                .Default = True
            End With
     
            With TextBoxSaisie
                .SetFocus
                .Font.Name = "Times New Roman"
                .Font.Size = 10
                .Left = 12
                .Height = 18
                .Top = CommandButtonValider.Top + (CommandButtonValider.Height - TextBoxSaisie.Height) / 2
                .Width = 312
            End With
     
    End Sub
     
    Private Sub tempsEcoule()
        MsgBox ("Le temps est écoulé")
        Me.Hide
    End Sub
     
    Private Function SupprSpecialCharacters(ByVal phrase As String) As String
     
        Dim j As Integer
     
        Const listeAccents = "àáâãäåéêëèìíîïðòóôõöùúûü'-,.&#@/*+()_""", lettresSansAccents = "aaaaaaeeeeiiiioooooouuuu               "
     
        For j = 1 To Len(listeAccents)
            phrase = Replace(phrase, Mid(listeAccents, j, 1), Mid(lettresSansAccents, j, 1))
        Next j
     
        SupprSpecialCharacters = phrase
     
    End Function
     
    Private Function ComparativeString(ByVal phrase As String) As String
     
        Dim j As Integer
     
        phrase = Replace(SupprSpecialCharacters(phrase), " ", "")
     
        ComparativeString = UCase(phrase)
     
    End Function
     
    Private Function AnswerVerification(ByVal answer As String) As Integer
     
        Dim i, j As Integer
     
        i = 2
     
        answer = ComparativeString(answer)
     
        While Sheets("reponses").Cells(i, theme).Value <> ""
     
            If answer = ComparativeString(Sheets("reponses").Cells(i, theme).Value) Then
     
                For j = 0 To nbReps
                    If reps(j) = i Then
                        AnswerVerification = 0
                        Exit Function
                    End If
                Next j
     
                AnswerVerification = i
                reps(nbReps) = i
                nbReps = nbReps + 1
                Exit Function
            End If
     
            i = i + 1
     
        Wend
     
        AnswerVerification = -1
     
    End Function
     
    Private Sub AffichageBonneReponse(position As Integer)
     
        Dim n As Variant
     
        n = ListBoxReponses.ListCount
     
        ListBoxReponses.AddItem
     
        ListBoxReponses.List(n, 0) = Sheets("reponses").Cells(position, theme)
        ListBoxReponses.List(n, 2) = Sheets("reponses").Cells(position, theme + 1)
     
    End Sub
     
    Private Sub AffichageMauvaiseReponse()
     
        Dim n As Variant
     
        n = ListBoxReponses.ListCount
     
        ListBoxReponses.AddItem
     
        ListBoxReponses.List(n, 1) = TextBoxSaisie.Value
        ListBoxReponses.List(n, 2) = 0
     
    End Sub
     
    Private Sub CommandButtonValider_Click()
     
        Dim cellule As Integer
     
             cellule = AnswerVerification(TextBoxSaisie.Value)
     
             If cellule = -1 Then
                 Call AffichageMauvaiseReponse
             ElseIf cellule > 0 Then
                 Call AffichageBonneReponse(cellule)
                 score = score + Sheets("reponses").Cells(cellule, theme + 1).Value
             End If
     
     
             TextBoxSaisie.Value = ""
     
             TextBoxSaisie.SetFocus
     
             SaisieReponses.Repaint
     
    End Sub

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    dans un module standard
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub ferme()
    Unload userform1 'adapter le nom du userform
    End Sub
    dans le activate de l'userform
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.OnTime Now + TimeValue("00:01:00"), "ferme"
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 28
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2018
    Messages : 2
    Par défaut
    Cette solution me permet bien d'utiliser le Userform mais celui ci ne se ferme pas au bout du temps donné dans le OnTime...

  4. #4
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Alors, tu n'as pas fais les manips indiquées par Patrick !

  5. #5
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut à vous,

    En règle générale, la syntaxe mise à part.
    Y a-t-il une réelle différence entre les méthodes Wait et Ontime?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    If Application.Wait(Now + TimeValue("0:01:00")) Then 
      Call ferme

  6. #6
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonsoir Marcel

    grave erreur de comparer wait a app.ontime
    il n'ont absolumnent rien voir l'un est l'autre
    wait stop VBA a chaque pose
    on time quand il n'est pas declanché ne fait rien
    en gros et autrement dit vba n'est pas bloqué sur pose entre deux executions et ca fait une tres large difference
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  7. #7
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Bonjour Patrick, Bonjour le Forum,

    OK. Merci.
    Passe une bonne journée.

Discussions similaires

  1. Fermer UserForm en appuyant sur une touche
    Par thomcat dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 21/05/2023, 16h24
  2. [PPT-2013] Fermer automatiquement un userform après X secondes PPT 2013
    Par Invité dans le forum VBA PowerPoint
    Réponses: 10
    Dernier message: 18/12/2014, 19h07
  3. fermer excel après utilisation dans webbrowser
    Par salihovic dans le forum Windows Forms
    Réponses: 3
    Dernier message: 04/06/2008, 10h29
  4. [AJAX] Fermer XHR si délai dépassé
    Par Ryu007 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/03/2007, 17h36
  5. Fermer Excel après ouverture OLE
    Par birdyz dans le forum Delphi
    Réponses: 6
    Dernier message: 07/09/2006, 14h35

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