Timer dans plusieurs cellules Excel
Résolu
raptoretienne
Messages postés
12
Date d'inscription
Statut
Membre
Dernière intervention
-
raptoretienne Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
raptoretienne Messages postés 12 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
j'aimerais faire une feuille excel qui me permet d'avoir plusieurs chrono dans plusieurs cellules. Je m'explique. Présentement, avec le code suivant (que j'ai trouvé dans un autre discussion) lorsque je met 1 dans B2 le chrono démarre en C2. Ce que j'aimerais c'est la même chose sauf que cela fonction aussi en B3/C3, B4/C4, etc. J'ai essayer d'insérer le code plusieurs fois à la suite en modifiant les valeurs de case sauf que cela ne fonctionne pas. Aussi, j'aimerais que le chrono démarre si j'indique 1, mais aussi 0.
Merci de votre aide.
j'aimerais faire une feuille excel qui me permet d'avoir plusieurs chrono dans plusieurs cellules. Je m'explique. Présentement, avec le code suivant (que j'ai trouvé dans un autre discussion) lorsque je met 1 dans B2 le chrono démarre en C2. Ce que j'aimerais c'est la même chose sauf que cela fonction aussi en B3/C3, B4/C4, etc. J'ai essayer d'insérer le code plusieurs fois à la suite en modifiant les valeurs de case sauf que cela ne fonctionne pas. Aussi, j'aimerais que le chrono démarre si j'indique 1, mais aussi 0.
Merci de votre aide.
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
A voir également:
- Minuteur excel
- Liste déroulante excel - Guide
- Word et excel gratuit - Guide
- Déplacer colonne excel - Guide
- Si ou excel - Guide
- Excel moyenne - Guide
17 réponses
Bonjour,
Moins gourmand en CPU:
dans un module:
Dans VBA de la feuille:
Y a encore moins gourmand avec des timers system(non gerer par excel) mais faut voir si vous avez bien plus de 4 timers
Moins gourmand en CPU:
dans un module:
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 End Sub
Dans VBA de la feuille:
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(R) = True 'stop timer End If End If End Sub
Y a encore moins gourmand avec des timers system(non gerer par excel) mais faut voir si vous avez bien plus de 4 timers
Merci, je vais essayer cela lors de mon retour a la maison, je te tiens au courant!
Et en fait je pensais avoir besoin de 40 timers, est ce que ça bouffe trop de cpu?
Et en fait je pensais avoir besoin de 40 timers, est ce que ça bouffe trop de cpu?
Re,
y a une erreur suite oubli apres des modifs
devient apres des modifs
besoin de 40 timers Faut que je teste. Avec 3 timers de "mon" code, excel prend mois de 1% CPU sur mon PC, apres ca depend du PC. Par contre avec votre code de depart, 1 timer 30% CPU
y a une erreur suite oubli apres des modifs
TM(R) = True 'stop timer
devient apres des modifs
TM(Target.Row - 2) = True 'stop timer
besoin de 40 timers Faut que je teste. Avec 3 timers de "mon" code, excel prend mois de 1% CPU sur mon PC, apres ca depend du PC. Par contre avec votre code de depart, 1 timer 30% CPU
J'ai essayé avec les modifications et j'obtiens cette erreur:
Erreur de compilation:
Sub ou Function non définie
(Feuille1 5:12)
:(
Erreur de compilation:
Sub ou Function non définie
(Feuille1 5:12)
:(
Bonjour à tous,
f894009, il ne faudrait pas mémoriser les heures de lancement et désactiver les timers dans workbook.close ?
Pour éviter que le fichier se rouvre s'il y en a un en cours.
eric
f894009, il ne faudrait pas mémoriser les heures de lancement et désactiver les timers dans workbook.close ?
Pour éviter que le fichier se rouvre s'il y en a un en cours.
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Ben oui.
Ce code, comme l'a dit f894009 doit être dans un module standard (Insertion/Module sous VBA).
En faisant cela, vous rendrez "visible" les fonctions qu'il contient dans tout votre classeur.
Et donc vous n'aurez plus l'erreur Sub ou Function non définie ...
CQFD
EDIT : une petite erreur toutefois dans le code WorkSheet_Change().
Remplacer :
par :
Ben oui.
Ce code, comme l'a dit f894009 doit être dans un module standard (Insertion/Module sous VBA).
En faisant cela, vous rendrez "visible" les fonctions qu'il contient dans tout votre classeur.
Et donc vous n'aurez plus l'erreur Sub ou Function non définie ...
CQFD
EDIT : une petite erreur toutefois dans le code WorkSheet_Change().
Remplacer :
TM(R) = True
par :
TM(Target.Row - 2) = True
Bonjour a tous
eriic:
il ne faudrait pas mémoriser les heures sais pas ce qu'il veut en faire donc pour le moment code pour compter, apres nous aviserons
pijaku:
Merci du rappel, c'etait pourtant ecrit !!!!!
raptoretienne
Je vais tester 40 compteurs actifs pour le CPU et voir comment coder au plus juste
eriic:
il ne faudrait pas mémoriser les heures sais pas ce qu'il veut en faire donc pour le moment code pour compter, apres nous aviserons
pijaku:
Merci du rappel, c'etait pourtant ecrit !!!!!
raptoretienne
Je vais tester 40 compteurs actifs pour le CPU et voir comment coder au plus juste
Re,
raptoretienne:
J'ai teste avec 24 et ca roule. Mais que voulez vous faire, car si vous avez l'idee de saisir dans d'autres cellules pendant le comptage,ca le bloque et c'est normale
raptoretienne:
J'ai teste avec 24 et ca roule. Mais que voulez vous faire, car si vous avez l'idee de saisir dans d'autres cellules pendant le comptage,ca le bloque et c'est normale
En fait je voulais une colonne avec les chiffres 1 et 40 qui représente 40 tests, selon le résultats (+/-) j'insère 0 ou 1 dans la colonne adjacente et le chrono démarre, à 40 secondes, je peux faire le test numéro 2, etc.
C'est pour un projet de recherche, le patient passe un test d'odorat, s'il identifie la bonne odeur, il se mérite un 1, sinon un 0. Entre chaque odeur, il doit y avoir un délai de 40 secondes. À la fin, avec je pourrai faire une sommation de la colonne faire les analyses au besoin. Le timer ici n'est pas essentiel, il me permettrait seulement de tout avoir mes outils sur une même feuille excel.
PS: merci beaucoup, j'ai réussi à faire marcher ton code sans erreur, toutefois, seulement la valeur 1 semble déclencher le code et non pas la valeur 0 aussi?
PS: merci beaucoup, j'ai réussi à faire marcher ton code sans erreur, toutefois, seulement la valeur 1 semble déclencher le code et non pas la valeur 0 aussi?
Bonjour,
Oui, seul 1 declanche pour l'instant.
Entre chaque odeur, il doit y avoir un délai de 40 secondes
Si j'ai bien compris, un seul chronos suffirait ou j'ai loupe un bout du film ??
code modifie pour 0 et 1
VBA Feuille:
Oui, seul 1 declanche pour l'instant.
Entre chaque odeur, il doit y avoir un délai de 40 secondes
Si j'ai bien compris, un seul chronos suffirait ou j'ai loupe un bout du film ??
code modifie pour 0 et 1
VBA Feuille:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Not Application.Intersect(Target, Range("B2:B25")) Is Nothing Then If Target <> "" And (Target.Value = 1 Or Target.Value = 0) 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 fait, comme c'est la, il me resterais qu'à mettre les cases jusqu'à B41/C41 et ça fonctionnerais. Mais oui un seul chrono pourrait fonctionner, ex: je rentre 0/1 dans B2 le chrono démarre en C2, ensuite attente de 40 secondes, je rentre de nouveau 0/1 en B3, le chrono de C2 pourrait reprendre de 0, attente de 40 secondes, etc.
Je ne sais pas si c'est assez clair haha.
Merci beaucoup pour votre aide, je n'y comprend pas grand chose à cette bouillie pour les chats :)
Je ne sais pas si c'est assez clair haha.
Merci beaucoup pour votre aide, je n'y comprend pas grand chose à cette bouillie pour les chats :)
Oui exactement: j'insère 0/1 --> 40 secondes --> j'insère 0/1 --> 40 secondes --> j'insère 0/1 (répéter 40 fois).
J'ai excel sur mac, je crois que c'est moyen compatible, rien ne se passe lorsque je clique sur start ou stop.
Re,
Fallait le dire!!!!
version sans API Windows, mais croix de fermeture de l'UF
https://www.cjoint.com/c/FDkqZGlG4Kf
Fallait le dire!!!!
version sans API Windows, mais croix de fermeture de l'UF
https://www.cjoint.com/c/FDkqZGlG4Kf