créer 24 timers sur 1 feuille RESOLU

ymanot

XLDnaute Occasionnel
Bonjour la communauté
j essai désespérément de modifier une macro afin de la répéter sur 24 lignes et 6 tableaux mais sans réussite.
explication
en B3 je declenche un timer en tapant 1 , j aimerai pour ce coureur avoir la possibilité de rajouter un timer en E;H;K;N;O (a chaque fois qu on peut lire depart c est le depart du timer pour une nouvelle balise) ensuite pour bloquer le timer je tape 2
si plus simple je suis preneur

J aimerai ensuite pouvoir répéter cette macro jusque 26 coureurs... et sur les 6 balises...
 

Pièces jointes

  • fiche CO timer.xlsm
    19 KB · Affichages: 20

ymanot

XLDnaute Occasionnel
Option Explicit
Public TM(3) As Boolean 'Flag L/S timer

Sub Timer_C2()
With Worksheets("feuil1")
.Range("C2") = .Range("C2") + 1 'incremente cellule
End With
If Not TM(0) Then 'si pas stop
Application.OnTime Now + TimeValue("00:00:01"), "Timer_C2" 'boucle sur procedure au bout de 1 seconde
End If
End Sub

Sub Timer_C3()
With Worksheets("feuil1")
.Range("C3") = .Range("C3") + 1
End With
If Not TM(1) Then
Application.OnTime Now + TimeValue("00:00:01"), "Timer_C3"
End If
End Sub

Sub Timer_C4()
With Worksheets("feuil1")
.Range("C4") = .Range("C4") + 1
End With
If Not TM(2) Then
Application.OnTime Now + TimeValue("00:00:01"), "Timer_C4"
End If
 

ymanot

XLDnaute Occasionnel
bonjour job
en fait j ai essaye de copier les macros mais des le depart lorsque je modifie la 1ere par copier coller et que je remplace
Sub Timer_C2() par Sub Timer_C5() puis
.Range("C2") = .Range("C2") + 1 par .Range("C5") = .Range("C5") + 1 puis
Application.OnTime Now + TimeValue("00:00:01"), "Timer_C2" ' par Application.OnTime Now + TimeValue("00:00:01"), "Timer_C5" '
je me retrouve avec une erreur.
pourriez vous dans ce cas m indiquer comment vous coupiriez la macro suivante pour un timer C5
ainsi je pourrais comprendre la suite.
merci
 

ymanot

XLDnaute Occasionnel
j ai aussi essayé de modifier comme suit cette macro initiale
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("B2:B4")) Is Nothing Then
If Target = 1 Then
TM(Target.Row - 2) = False 'flag lance timer
Range("C" & Target.Row) = -1 'init timer
Application.Run "Timer_C" & Target.Row 'lance le timer
Else
TM(Target.Row - 2) = True 'stop timer
End If
End If
End Sub

en remplacant
If Not Application.Intersect(Target, Range("B2:B4")) par If Not Application.Intersect(Target, Range("B2:B30")) ce qui ma genere un debugage

donc oui je vois bien qu il s agit de coier coller a répétition les macros mais il y a une demarche que je ne dois pas faire correctement.
donc help
merci le forum
 

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Bonjour la communauté
j essai désespérément de modifier une macro afin de la répéter sur 24 lignes et 6 tableaux mais sans réussite.
explication
en B3 je declenche un timer en tapant 1 , j aimerai pour ce coureur avoir la possibilité de rajouter un timer en E;H;K;N;O (a chaque fois qu on peut lire depart c est le depart du timer pour une nouvelle balise) ensuite pour bloquer le timer je tape 2
si plus simple je suis preneur

J aimerai ensuite pouvoir répéter cette macro jusque 26 coureurs... et sur les 6 balises...
comme l'a dit JOb75 il faut une variable par "timer"
Mais … Mais … il n'y a pas d'objet "timer" en dehors d'un USF !!!.
Timer est une fonction qui retourne le nombre de millisecondes depuis minuit.
il est cependant simple par calcul de connaitre le temps entre deux événements dont on mémorise la valeur "timer" lors de leur apparition.
un petit inconvénient toutefois : Timer est ré-initialisé à chaque passage à 00:00:00 (minuit)
 

job75

XLDnaute Barbatruc
Il est facile de créer à la suite les codes des lignes 6 à 28 :

- dans VBA copiez tout le code qui concerne la ligne 5 et collez-le à la suite

- sélectionnez les nouvelles lignes

- menu Edition => Remplacer => Rechercher : 5 - Remplacer par : 6.
 

Membres actuellement en ligne

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 848
dernier inscrit
Djigbenou