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 :

Timer sur VBA problème de fonctionnement [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 8
    Par défaut Timer sur VBA problème de fonctionnement
    Bonjour à tous,
    Je m'appelle Dimitri et je suis en étude d'ingénieur, dans le cadre de mes études je dois faire un programme de maintenance sur Excel.
    Le problème c'est que je n'ai encore eu aucune formation sur VBA.
    Le but du programme est de faire un suivi de maintenance en fonction des horaires d'utilisation de la machine.
    J'ai donc pensé à faire un timer qu'on lance lorsqu'on allume la machine et qu'on arrete lors de sa mise hors service.
    Jusque la tout va bien. Cependant plusieurs tâches sont à réaliser à des périodes différentes. Donc par exemple après 25h d'utilisation nettoyer le filtre et après 100h le changer.
    Mon planning de maintenance ce présente sous forme de tableau, voir ci dessous:
    Nom : tableau maintenance.PNG
Affichages : 1400
Taille : 34,2 Ko

    En dessous de chaque tâches je voulais afficher une cellule avec un timer qui puisse etre remis à zéro indépendamment des autres et donc afficher son temps indépendamment des autres.
    Ci joint une capture de ce que j'ai essayé de faire à coté pour tester la méthode:
    Nom : timer.PNG
Affichages : 1356
Taille : 7,8 Ko
    Donc en gros un bouton pour lancer tous les timer, un bouton pour stopper tous les timer et ensuite un bouton reset pour chaque timer.

    J'ai déjà ecrit les lignes de codes VBA mais il y a des gros bug (le timer ne va pas de seconde en seconde, quand je reset un timer, il repart bien indépendamment des autres mais son temps est multiplié par 3 ect ect...) J'ai essayé de résoudre tout ça tant bien que mal mais sans succés..
    Est ce que quelqu'un pourrait regarder mes lignes de codes et me dire ce qu'il ne va pas svp?
    Ca fait des jours que je suis dessus et je sèche vraiment..
    Merci d'avance!

    Ci joint mon fichier excel:
    Maintenance planning (Enregistré automatiquement).xlsm

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 8
    Par défaut
    PS: Si quelqu'un a une autre solution plus simple ou plus efficace à mettre en place, je suis preneur de toutes idées

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    j 0 H -2

    Un timer pour toute l'application toutes les secondes exemple booléens true/false pour chaque bouton si true incrément si false pas d'incrément du compteur assujetti au bouton!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     compteur = compteur + "00:00:0" & abs(true)
    Dernière modification par Invité ; 07/07/2017 à 08h16.

  4. #4
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Un exemple bricolé vite fait avec Application.OnTime :

    Code à placer dans un module standard :
    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
    Option Explicit
     
    Public Stop1 As Boolean
    Public Stop2 As Boolean
    Public Stop3 As Boolean
    Public T1 As Long
    Public T2 As Long
    Public T3 As Long
     
    Private Const SECONDE As String = "00:00:01"
     
    Public Sub Timer1()
        If Stop1 = False Then
            T1 = T1 + 1
            Cells(1, 1).Value = T1
            Application.OnTime Now + TimeValue(SECONDE), "Timer1"
        End If
    End Sub
     
    Public Sub Timer2()
        If Stop2 = False Then
            T2 = T2 + 1
            Cells(1, 2).Value = T2
            Application.OnTime Now + TimeValue(SECONDE), "Timer2"
        End If
    End Sub
     
    Public Sub Timer3()
        If Stop3 = False Then
            T3 = T3 + 1
            Cells(1, 3).Value = T3
            Application.OnTime Now + TimeValue(SECONDE), "Timer3"
        End If
    End Sub
    Code des boutons dans le module de la feuille :
    (boutons nommés : START_ALL, STOP_ALL, RESET_ONE, ..., STOP_THREE)
    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
    Option Explicit
     
    'START BUTTON
    Private Sub START_ALL_Click()
        Stop1 = False: Stop2 = False: Stop3 = False
        T1 = 0: T2 = 0: T3 = 0
        Call Timer1
        Call Timer2
        Call Timer3
    End Sub
     
    'STOP ALL BUTTON
    Private Sub STOP_ALL_Click()
        Stop1 = True: Stop2 = True: Stop3 = True
        T1 = 0: T2 = 0: T3 = 0
    End Sub
     
    'RESET BUTTONS
    Private Sub RESET_ONE_Click()
        T1 = 0
    End Sub
     
    Private Sub RESET_TWO_Click()
        T2 = 0
    End Sub
     
    Private Sub RESET_THREE_Click()
        T3 = 0
    End Sub
     
    'STOP BUTTONS WITHOUT RESET
    Private Sub STOP_ONE_Click()
        Stop1 = True
        T1 = 0
    End Sub
     
    Private Sub STOP_TWO_Click()
        Stop2 = True
        T2 = 0
    End Sub
     
    Private Sub STOP_THREE_Click()
        Stop3 = True
        T3 = 0
    End Sub

  5. #5
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 8
    Par défaut
    Bonjour pijaku et dysorthographie!

    Tout d'abord, merci pour vos réponses rapides!

    dysorthographie, je n'arrive pas trop à visualiser ce que tu m'as expliqué. En gros l'idée serait de faire compteur qui va me dire par exemple tant que je suis pas a 25h, j'incrémente et dès que j'atteins 25h il stoppe et m'alerte donc qu'il faut changer le filtre?

    pijaku, merci beaucoup! je vais tester et essayer de comprendre comment tu as fait!

  6. #6
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par d.loyer Voir le message
    dysorthographie, je n'arrive pas trop à visualiser ce que tu m'as expliqué
    C'est exactement ce que fait mon exemple.
    Pour arrêter un Timer on met une variable Booléenne à True. Pour le démarrer on la met à False.
    Le reset d'une cellule, sans arrêt du Timer se traduit par : remettre la cellule à 0...
    On utilise pour faire cela des variables publiques.

  7. #7
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 8
    Par défaut
    Citation Envoyé par pijaku Voir le message
    C'est exactement ce que fait mon exemple.
    Pour arrêter un Timer on met une variable Booléenne à True. Pour le démarrer on la met à False.
    Le reset d'une cellule, sans arrêt du Timer se traduit par : remettre la cellule à 0...
    On utilise pour faire cela des variables publiques.
    Okkkk j'ai compris! Super! Ca fonctionne nickel! Dire que tu as fait ça en qqlq minutes et que moi je suis dessus depuis plusieurs jours.. lol
    Par contre quand je stoppe les timer et re appuie sur start tout se réinitialise. Il faudrait que quand je stoppe les timer et que je les relance ils reprennent là ou ils se sont arrêtés. Mais je vais essayer de faire le changement tout seul et si je n'y arrive pas je reviendrai vers vous!

    Et est ce que vous savez s'il est possible d'enregistrer le moment ou mes timer se sont arretés? C'est à dire si lorsque je vais arreter mes timer, enregistrer et fermer mon fichier, la prochaine fois ou je vais re ouvrir mon fichier, je vais pouvoir reprendre la ou j'avais stoppé mes timer?

    Merci encore!

  8. #8
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Citation Envoyé par d.loyer Voir le message
    Par contre quand je stoppe les timer et re appuie sur start tout se réinitialise. Il faudrait que quand je stoppe les timer et que je les relance ils reprennent là ou ils se sont arrêtés.
    Dans le module standard ajouter une variable booléenne Arret_Temp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Option Explicit
    Public Arret_Temp As Boolean
    Public Stop1 As Boolean
    Public Stop2 As Boolean
    Public Stop3 As Boolean
    Public T1 As Long
    Public T2 As Long
    Public T3 As Long
     
    Private Const SECONDE As String = "00:00:01"
    Modifier le bouton STOP_ALL comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'STOP ALL BUTTON
    Private Sub STOP_ALL_Click()
        Stop1 = True: Stop2 = True: Stop3 = True
        Arret_Temp = True
    End Sub
    Et modifier le bouton START_ALL comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    'START BUTTON
    Private Sub START_ALL_Click()
        Stop1 = False: Stop2 = False: Stop3 = False
        If Arret_Temp = False Then 
            T1 = 0: T2 = 0: T3 = 0
        Else
            T1 = Cells(1, 1).Value: T2 = Cells(1, 2).Value: T3 = Cells(1, 3).Value
            Arret_Temp = False
        End If
        Call Timer1
        Call Timer2
        Call Timer3
    End Sub
    Citation Envoyé par d.loyer Voir le message
    Et est ce que vous savez s'il est possible d'enregistrer le moment ou mes timer se sont arretés? C'est à dire si lorsque je vais arreter mes timer, enregistrer et fermer mon fichier, la prochaine fois ou je vais re ouvrir mon fichier, je vais pouvoir reprendre la ou j'avais stoppé mes timer?
    Directement dans les cellules concernées.
    Donc, il convient de modifier les codes des Timers, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Sub Timer1()
        If Stop1 = False Then
            If Cells(1, 1).Value > 0 Then T1 = Cells(1, 1).Value - 1
            T1 = T1 + 1
            Cells(1, 1).Value = T1
            Application.OnTime Now + TimeValue(SECONDE), "Timer1"
        End If
    End Sub
    même chose pour les autres...

  9. #9
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 8
    Par défaut
    Merci infiniment!!!

    J'ai fait un truc qui semble marche juste avant que tu me postes ta réponse, pourrais tu me dire si c'est correct ou s'il vaut mieux que j'utilise ce que tu m'as envoyé stp?
    En gros j'ai enlevé les T1=0: T2=0: T3=0 dans START BUTTON et dans STOP ALL BUTTON j'ai remplacé les T1=0: T2=0: T3=0 par T1 = T1: T2 = T2: T3 = T3

    'START BUTTON
    Private Sub START_ALL_Click()
    Stop1 = False: Stop2 = False: Stop3 = False
    Call Timer1
    Call Timer2
    Call Timer3
    End Sub

    'STOP ALL BUTTON
    Private Sub STOP_ALL_Click()
    Stop1 = True: Stop2 = True: Stop3 = True
    T1 = T1: T2 = T2: T3 = T3
    End Sub


    Citation Envoyé par pijaku Voir le message
    Directement dans les cellules concernées.
    Donc, il convient de modifier les codes des Timers, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Sub Timer1()
        If Stop1 = False Then
            If Cells(1, 1).Value > 0 Then T1 = Cells(1, 1).Value - 1
            T1 = T1 + 1
            Cells(1, 1).Value = T1
            Application.OnTime Now + TimeValue(SECONDE), "Timer1"
        End If
    End Sub
    même chose pour les autres...
    Je vais essayer ça de suite! Merci!

  10. #10
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Oui, ça va fonctionner.
    Sauf que :
    T1 = T1: T2 = T2: T3 = T3 dans le STOP est inutile.
    Et que : ton code ne prendra pas en charge le cas ou tu voudrais tout réinitialiser (mettre à 0).
    Mais sinon ça va aller...

  11. #11
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 8
    Par défaut
    Haha ah oui ok je vois
    Bon je vais quand même opter pour ta méthode lol

    En plus j'ai essayé le code pour l'histoire de reprendre la ou les timer se sont arretés apres fermeture et reouverture du document et ça ne fonctionne pas, mes timers ne veulent plus se lancer, ils sont bloqués. Mais ça doit peut être venir de ma modif farfelue avec les T1=T1 ect ..
    Je vais faire comme tu m'as envoyé et on verra

    Merci!!

  12. #12
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 8
    Par défaut
    Citation Envoyé par pijaku Voir le message
    Directement dans les cellules concernées.
    Donc, il convient de modifier les codes des Timers, comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Public Sub Timer1()
        If Stop1 = False Then
            If Cells(1, 1).Value > 0 Then T1 = Cells(1, 1).Value - 1
            T1 = T1 + 1
            Cells(1, 1).Value = T1
            Application.OnTime Now + TimeValue(SECONDE), "Timer1"
        End If
    End Sub
    même chose pour les autres...
    J'ai essayé en remplaçant tout comme il faut mais ça ne fonctionne pas, les timer se bloquent et ne veulent plus se relancer

  13. #13
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Oui, je sais, j'ai merdé...

    Il doit y avoir plus simple, mais quand je suis englué dans une solution je n'arrive pas à m'en départir...

    Voici pour toi.
    Code du module standard :
    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
    Option Explicit
     
    Public Arret_Temp As Boolean
    Public Stop1 As Boolean
    Public Stop2 As Boolean
    Public Stop3 As Boolean
    Public T1 As Long
    Public T2 As Long
    Public T3 As Long
     
    Private Const SECONDE As String = "00:00:01"
     
    Public Sub Timer1()
        If Stop1 = False Then
            T1 = Cells(1, 1).Value + 1
            Cells(1, 1).Value = T1
            Application.OnTime Now + TimeValue(SECONDE), "Timer1"
        End If
    End Sub
     
    Public Sub Timer2()
        If Stop2 = False Then
            T2 = Cells(1, 2).Value + 1
            Cells(1, 2).Value = T2
            Application.OnTime Now + TimeValue(SECONDE), "Timer2"
        End If
    End Sub
     
    Public Sub Timer3()
        If Stop3 = False Then
            T3 = Cells(1, 3).Value + 1
            Cells(1, 3).Value = T3
            Application.OnTime Now + TimeValue(SECONDE), "Timer3"
        End If
    End Sub
    Code des boutons dans le module de la feuille :
    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
    Option Explicit
     
    'START BUTTON
    Private Sub START_ALL_Click()
        Stop1 = False: Stop2 = False: Stop3 = False
        If Arret_Temp = False Then
            T1 = 0: T2 = 0: T3 = 0
        Else
            T1 = Cells(1, 1).Value: T2 = Cells(1, 2).Value: T3 = Cells(1, 3).Value
            Arret_Temp = False
        End If
        Call Timer1
        Call Timer2
        Call Timer3
    End Sub
     
    'STOP ALL BUTTON
    Private Sub STOP_ALL_Click()
        Stop1 = True: Stop2 = True: Stop3 = True
        Arret_Temp = True
    End Sub
     
    'RESET BUTTONS
    Private Sub RESET_ONE_Click()
        Cells(1, 1).Value = 0
    End Sub
     
    Private Sub RESET_TWO_Click()
        Cells(1, 2).Value = 0
    End Sub
     
    Private Sub RESET_THREE_Click()
        Cells(1, 3).Value = 0
    End Sub
     
    'STOP BUTTONS WITHOUT RESET
    Private Sub STOP_ONE_Click()
        Stop1 = True
    End Sub
     
    Private Sub STOP_TWO_Click()
        Stop2 = True
    End Sub
     
    Private Sub STOP_THREE_Click()
        Stop3 = True
    End Sub
    Et le fichier exemple : Pièce jointe 292152

  14. #14
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2017
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2017
    Messages : 8
    Par défaut
    Super!!! Ca fonctionne parfaitement!! Je ne sais pas comment te remercier lol
    J'aurais jamais réussi à faire ça tout seul..

    Merci de m'avoir donné de ton temps et merci pour ta gentillesse!
    Passe une excellente journée!

  15. #15
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Pour un affichage en HH:MM:SS il convient de :

    1- formater les cellules correctement.
    Dans la procédure START :
    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
    'START BUTTON
    Private Sub START_ALL_Click()
        Stop1 = False: Stop2 = False: Stop3 = False
        If Arret_Temp = False Then
            T1 = 0: T2 = 0: T3 = 0
        Else
            T1 = Cells(1, 1).Value: T2 = Cells(1, 2).Value: T3 = Cells(1, 3).Value
            Arret_Temp = False
        End If
        Cells(1, 1).NumberFormat = "[h]:mm:ss;@"
        Cells(1, 2).NumberFormat = "[h]:mm:ss;@"
        Cells(1, 3).NumberFormat = "[h]:mm:ss;@"
        Call Timer1
        Call Timer2
        Call Timer3
    End Sub
    Typer correctement les variables T1, T2, T3 (en Double au lieu de Long) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Public T1 As Double
    Public T2 As Double
    Public T3 As Double
    Et modifier les Sub Timer comme suit :
    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
    Public Sub Timer1()
        If Stop1 = False Then
            T1 = Cells(1, 1).Value + TimeValue(SECONDE)
            Cells(1, 1).Value = T1
            Application.OnTime Now + TimeValue(SECONDE), "Timer1"
        End If
    End Sub
     
    Public Sub Timer2()
        If Stop2 = False Then
            T2 = Cells(1, 2).Value + TimeValue(SECONDE)
            Cells(1, 2).Value = T2
            Application.OnTime Now + TimeValue(SECONDE), "Timer2"
        End If
    End Sub
     
    Public Sub Timer3()
        If Stop3 = False Then
            T3 = Cells(1, 3).Value + TimeValue(SECONDE)
            Cells(1, 3).Value = T3
            Application.OnTime Now + TimeValue(SECONDE), "Timer3"
        End If
    End Sub

  16. #16
    Invité
    Invité(e)
    Par défaut
    Je vois pas l'intérêt de trois timer!

    Il n'en faut qu'un!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Sub Timer1()
    Cells(1, 1).Value = Cells(1, 1).Value + TimeValue("00:00:0" & abs(BoolTimer1))
    Cells(1, 2).Value = Cells(1, 2).Value + TimeValue("00:00:0" & abs(BoolTimer2))
     Cells(1, 3).Value = Cells(1, 3).Value + TimeValue("00:00:0" & abs(BoolTimer3))
     
    If BoolTimer1 + BoolTimer2 + BoolTimer3 then Application.OnTime Now + TimeValue("00:00:01"), "Timer1"
    End  Sub
    Dernière modification par Invité ; 07/07/2017 à 18h03.

  17. #17
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Pourquoi 3 timer?
    Parce qu'il veut réinitialiser un timer ou un autre en cours d'exécution.
    Effectivement, les 3 sont démarrés simultanément, mais la suite est différente par l'arrêt d'un timer.
    Du moins c'est comme ça que je l'ai perçu.

  18. #18
    Invité
    Invité(e)
    Par défaut
    Il peut arrêter/reprendre de faire défiler un timer false/true quand il veut, c'est pas comme si Application.OnTime serait une précision au 1/1000!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Sub Timer1()
    Cells(1, 1).Value = Cells(1, 1).Value + TimeValue("00:00:0" & abs(BoolTimer1))
    Cells(1, 2).Value = Cells(1, 2).Value + TimeValue("00:00:0" & abs(BoolTimer2))
     Cells(1, 3).Value = Cells(1, 3).Value + TimeValue("00:00:0" & abs(BoolTimer3))
    *
    If BoolTimer1 + BoolTimer2 + BoolTimer3 then Application.OnTime Now + TimeValue("00:00:01"), "Timer1"
    End  Sub
    Moi si je devais utiliser 3 timer je perendrai des contrôles timer 1/1500 par seconde!

  19. #19
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Tu as raison.
    Depuis mon téléphone portable je n'avais pas vu ton astuce de
    Abs(booltimerX)

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

Discussions similaires

  1. requête de selection sur VBA?
    Par jessy212 dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 28/08/2006, 10h58
  2. [VBA-E] tri sur VBA pour Excel
    Par mariedrouin dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 21/05/2006, 13h32
  3. Réponses: 3
    Dernier message: 09/04/2006, 09h10
  4. [Livre] Débuts sur VBA 6.3 pour EXCEL 2002
    Par thulvar dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 20/12/2005, 10h45
  5. Création DLL pour utilisation sur VBA
    Par Fbartolo dans le forum C++Builder
    Réponses: 1
    Dernier message: 21/11/2005, 20h44

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