Programmation d'un Timer sous excel

Bonjour,

Je vous expose mon problème! Je suis novice en tout ce qui concerne excel.
J'aimerais qu'un Timer se lance dans la case C2 lorsque j'entre la valeur "1" dans la case B2. Je travaille sous excel 2003.

Merci pour d'avance pour votre réponse.

9 réponses

  • Votes
  • Date
  • Date décroissante
  1. Contributeur
    Bonjour,
    Tu veux un décompte dans la cellule C2 quand tu tape 1 en B2 ?
    Clic gauche sur le nom de l'onglet et valider "Visualiser le code, dans la fenêtre ouverte tu colle le code ci-dessous...
    Option Explicit 
    Dim TM As Boolean 
    
    Private Sub Worksheet_Change(ByVal Target As Range) 
        If Target.Address = "$B$2" Then 
            If Target = 1 Then 
                TM = True 
                Timer 
            Else 
                TM = False 
            End If 
        End If 
    End Sub 
    
    Sub Timer() 
    Static S As Byte, B 
        While TM 
            If B <> Second(Now) Then 
                Range("C2") = S 
                S = S + 1 
                B = Second(Now) 
            End If 
            DoEvents 
        Wend 
    End Sub

    Tu revient sur ta feuille et tu tape 1 dans B2..
    Pour arrèter tu change B2
    A+

    L'expérience instruit plus sûrement que le conseil. (André Gide)
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    1. Peut être encore une autre question si je veux appliquer ce systeme à une colonne je pense que je dois changer l'adressage des cellules, je dois m'y prendre de quelle facon? Et aussi pour réinitialisé le processus je dois faire quoi?
      1. Contributeur
        Ta première question je comprend pas bien ton problème ?
        Pour la 2, tu change le code par...
        Option Explicit
        
        Dim TM As Boolean
        Dim S As Long
        
        Private Sub Worksheet_Change(ByVal Target As Range)
            If Target.Address = "$B$2" Then
                If Target = 1 Then
                    TM = True
                    Timer
                ElseIf Target = 2 Then
                    TM = False
                    S = 0: Range("C2") = S
                Else
                    TM = False
                End If
            End If
        End Sub
        
        Sub Timer()
        Dim B As Byte
            While TM
                If B <> Second(Now) Then
                    Range("C2") = S
                    S = S + 1
                    B = Second(Now)
                End If
                DoEvents
            Wend
        End Sub

        Dans B2 tu tape... 1 = démarrage... 2 = arrèt et remise à zéro.. autre = stop sans réinitialiser.
        A+
        1. Ah super pour la réinitialisation ca fonctionne bien! Merci

          Dans ma première question j'aimerais réalisé la même chose c'est a dire Timer qui se déclenche en tapant 1, s'arrête et se réinitialise si on tape 2, etc...

          Mais le tout sur sur une colonne allant part exemple de B2 à B5 pour ce qui est des valeurs à entrer de type (1,2, autre) et les Timers correspondant dans les cellules C2 à C5.

          Je suppose qu'il faut changer les valeurs des cellules pour y arriver ou bien?
          1. Bonjour,

            Je pense que si tu avais dit tout de suite ce que tu voulais exactement, lermite n'aurait pas refait 3 fois le code pour te donner la solution.

            Bonjour lermite, j'admire ta patience.

            :o|
            1. Contributeur
              Bonjour Polux,
              Je n'avais pas vu ton poste quand j'ai répondu :D
              Dans un sens tu a raison mais bah, j'ai pas oublier que j'ai aussi été débutant, bien que cela fait.... longtemps.
              A+
          2. Contributeur
            Bon, un peu à toi de travailer, je te donne les pistes...
            Créer autant de timer que de décompte à faire avec des noms par exemple Timer1, Timer2.. etc.
            Assigner Les résultat dans les bonnes cellules.. C2, C3..
            Modifier le test des cellule B2,B3.. et envoyer ou arrèter les bons timer.
            1. Merci je suis déjà sur tes pistes c'est vrai merci de ta patience "lermite 222" tu m'as vraiment beaucoup aidé.

              "Polux31" j'ai mentionné il me semble que j'étais débutant en excel, je me suis peut être mal exprimer pour faire comprendre mon problème mais je pense que ton commentaire n'avais pas lieu d'être il était vraiment inutile.

              Mais merci encore "lermite 222" de ta patience et de ton aide et ta diplomatie ;)
              1. Relis ton premier post et ta dernière demande. Ce n'est pas la même chose. Tu veux un vélo dans ton premier post, et tu réclames une moto dans le second.

                Débutant ou pas, exprimer un besoin est élémentaire et permet de gagner beaucoup de temps.

                Lis ma signature et tu auras tout compris. Et crois moi, mon commentaire est loin d'être inutile.
              2. Contributeur
                Lis ma signature et tu auras tout compris. Et crois moi, mon commentaire est loin d'être inutile.
                +25