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 :

Mise en place d’un chronomètre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Par défaut Mise en place d’un chronomètre
    Bonjour
    J’ai un code concernant un time-out.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Option Explicit
    Public start As String
    Sub timer_off()
    Dim start, PauseTime
    PauseTime = 100   ' Définit la durée.
    start = Timer    ' Définit l'heure de début.
    Do While Timer < start + PauseTime
    DoEvents    ' Donne le contrôle à d'autres processus.
    Loop
    Application .quit
    End Sub
    Celui-ci me va bien, mais j’aimerai faire apparaître un chronomètre du temps restant.
    Mon problème est que je n'arrive pas à intégrer une quelconque horloge ou chrono à l'intérieur du code sans que cela ne gène l'exécution de ce code. Celui-ci n'est plus actif.
    Merci de votre aide concernant ce problème

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Qu'est ton "temps restant" ? Rien d'"autre que la valeur de ta variable Start + la durée définie - la valeur de timer ... (rien de plus simple !)

    dans ta boucle, juste avant le DoEvents, donc :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label1.Caption = start + PauseTime - Timer
    affichera le "temps restant" dans un Label nommé Label1

    Mais si tu ne veux pas donner le vertige à l'utilisateur, préfère ceci, qui n'affichera que des entiers de secondes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label1.Caption = Int(start + PauseTime - Timer)
    Ceci étant dit :

    Pourquoi définir start deux fois (une fois en public et l'autre dans ta procédure ?) . Il suffit de le faire dans ta procédure. (et défini tes types !)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim start As Long, PauseTime As Integer

  3. #3
    Membre éclairé Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Par défaut
    Merci de ta réponse, mais j'ai un problème. J'ai bien créé un userform avec un Label1 dans lequel j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label1.Caption = Int(start + PauseTime - Timer)
    mais rien ne se passe

    et de plus, la feuille dans laquelle je traveille n'est plus accessible à sause du userform

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    682
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 682
    Par défaut
    Bonjour,

    Pour ce qui est de ton Userform, il ne se met pas à jour si j'ai bien compris.

    Premièrement, vérifie si tu n'aurais pas un ScreenUpdate qui traînerait à False.
    Ensuite, pour réafficher ton Userform actualisé, tu peux utiliser Par contre, je ne suis pas bien sûr d'avoir compris ce qui se passait réellement. N'as-tu aucune mise à jour de ce Userform ou rien ne se passe-t-il tout court ?

    EDIT : En ce qui concerne ton Userform qui bloque l'accès à tes feuilles, le problème c'est que tu utilises un Userform modal. Il te faut basculer sur un affichage non modal pour résoudre ton problème. Donc, au lieu d'avoir il faut que tu remplaces par et hop le tour est joué !

  5. #5
    Membre éclairé Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Par défaut
    Je n'au aucun screenupdate qui traine car, pour l'instant il n'y a que ce bout de code dans mon programme.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub timer_off()
    Dim start As Long, PauseTime As Integer
    PauseTime = 50   ' Définit la durée.
    start = Timer    ' Définit l'heure de début.
    Do While Timer < start + PauseTime
    UserForm1.Show 0
    DoEvents    ' Donne le contrôle à d'autres processus.
    Loop
    End Sub
    Le userform ne se met à jour que lorsque je clique dessus, à l'emplacement du Label1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Label1_Click()
    Label1.Caption = Int(start + PauseTime - Timer)
    End Sub
    Par contre, avec , j'ai bien accès à ma feuille, mais sans pouvoir écrire dedans, et cela bloque tout, je suis obligé de faire 'Ctrl-Alt-Suppr'

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Citation Envoyé par babybell Voir le message
    Merci de ta réponse, mais j'ai un problème. J'ai bien créé un userform avec un Label1 dans lequel j'ai mis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Label1.Caption = Int(start + PauseTime - Timer)
    mais rien ne se passe
    Tu doit mettre cela dans ton Timer...
    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
    Sub timer_off()
    Dim start, PauseTime
    Dim S As Byte
        PauseTime = 100   ' Définit la durée.
        start = Timer    ' Définit l'heure de début.
        Do While Timer < start + PauseTime
            If S <> Second(Time) Then
                'pour que l'affichage ne se passe que toute les secondes
                'sinon ça va être infernal
                UserForm1.Label1.Caption = Int(start + PauseTime - Timer)
                S = Second(Time)
            End If
            DoEvents    ' Donne le contrôle à d'autres processus.
        Loop
        Application .Quit
    End Sub
    Eventuellement adapter le nom de ton UserForm
    A+

  7. #7
    Membre éclairé Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Par défaut
    merci, cela fonctionne mieux, mais j'ai toujours le problème de ne pas pouvoir écrire sur ma feuille pendant que le chrono défile malgré le petit conseil d'ucfoutu, que je remercie autant que toi de votre aide.

  8. #8
    Membre éclairé Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Par défaut
    Ca y est, ça marche. Je ne mettais pas au bon endroit. Voici le code final:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub timer_off()
    Dim start, PauseTime
    Dim S As Byte
        PauseTime = 600   ' Définit la durée.
        start = Timer    ' Définit l'heure de début.
        UserForm1.Show ([0])
        Do While Timer < start + PauseTime
            If S <> Second(Time) Then
                UserForm1.Label1.Caption = Int(start + PauseTime - Timer)
                S = Second(Time)
            End If
            DoEvents    ' Donne le contrôle à d'autres processus.
        Loop
    End Sub
    Encore merci à vous

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

Discussions similaires

  1. Mise en place d’un réseau d’administration et de supervision
    Par Gabich21 dans le forum Achat et Conseils
    Réponses: 6
    Dernier message: 24/01/2014, 11h01
  2. Mise en place d’un system vidéo de cours en ligne
    Par coyoconnor dans le forum Sujets
    Réponses: 0
    Dernier message: 07/02/2010, 14h54
  3. Mise en place d´un réseau Internet pour une entreprise
    Par hody dans le forum Administration
    Réponses: 1
    Dernier message: 01/12/2007, 14h39
  4. Aide pour la mise en place dun réseau
    Par marilou86 dans le forum Réseau
    Réponses: 0
    Dernier message: 17/11/2007, 22h40

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