OVH Cloud OVH Cloud

Temps limite pour une entrée

6 réponses
Avatar
Stéphan DuQuébec
Bonjour à vous,

Seconde question en peu de temps.....mais je suis dans la brouille......

Avec une commande du genre:
Sub Attente
Range ("A1").Select
Application.OnTime Now + TimeValue("00:00:10"), AutreMacro
End Sub

Je désire laisser à un éventuel utilisateur de la feuille de calcul un délai
de 10 secondes avant de passer à une nouvelle opération. Mais m'est-il
possible de "bypasser" l'attente de 10 secondes advenant que l'utilisateur
saisisse une donnée disons en C1 avant la fin du délai.

J'aimerais mettre la main sur une ligne de commande qui déclenche une macro
adevant que le délai de 10 secondes se passe sans que rien ne soit saisi dans
la feuille de calcul mais qui bat en retraite si l'utilisateur saisi une
donnée avavnt la fin du décompte. Il faut pour cela que je puisse garder la
possibilité d'opérer dans ma feuille pendant le décompte.

J'espère être suffisament précis pour être compris.

Merci !

6 réponses

Avatar
docm
Bonjour.

"Stéphan DuQuébec" wrote in
message news:
Bonjour à vous,

Seconde question en peu de temps.....mais je suis dans la brouille......

Avec une commande du genre:
Sub Attente
Range ("A1").Select
Application.OnTime Now + TimeValue("00:00:10"), AutreMacro
End Sub

Je désire laisser à un éventuel utilisateur de la feuille de calcul un
délai

de 10 secondes avant de passer à une nouvelle opération. Mais m'est-il
possible de "bypasser" l'attente de 10 secondes advenant que l'utilisateur
saisisse une donnée disons en C1 avant la fin du délai.


Par "bypasser" l'attente de 10 secondes, veux-tu dire que tu veux exécuter
immédiatement la macro sans attendre que les 10 secondes soient écoulées ?


J'aimerais mettre la main sur une ligne de commande qui déclenche une
macro

adevant que le délai de 10 secondes se passe sans que rien ne soit saisi
dans

la feuille de calcul mais qui bat en retraite si l'utilisateur saisi une
donnée avavnt la fin du décompte. Il faut pour cela que je puisse garder
la

possibilité d'opérer dans ma feuille pendant le décompte.

J'espère être suffisament précis pour être compris.

Merci !


Avatar
Stéphan DuQuébec
C'est très exactement ce que je voulais dire docm.

Bypasser.....anglicisme typiquement québécois......


de 10 secondes avant de passer à une nouvelle opération. Mais m'est-il
possible de "bypasser" l'attente de 10 secondes advenant que l'utilisateur
saisisse une donnée disons en C1 avant la fin du délai.


Par "bypasser" l'attente de 10 secondes, veux-tu dire que tu veux exécuter
immédiatement la macro sans attendre que les 10 secondes soient écoulées ?



Avatar
docm
Re-bonjour Stephan

Voici le code qu'il faut.

'----------------------
'Code à mettre dans Module1
Global bEnCours As Boolean
Global HeureProchainAppel

Sub EvenementOnTime()
If bEnCours = False Then
'Annuler le paramétrage du OnTime programmé précédemment.
On Error Resume Next
Application.OnTime EarliestTime:=HeureProchainAppel, _
Procedure:="EvenementOnTime", Schedule:úlse
Exit Sub
End If

Call AutreMacro

Call ProgrammerLeProchainEvenementOnTime


End Sub
'----------------------

Sub ProgrammerLeProchainEvenementOnTime()
'Prochain OnTime

HeureProchainAppel = Now + TimeValue("00:00:10")
Application.OnTime HeureProchainAppel, "EvenementOnTime", False
bEnCours = True

End Sub


Sub AutreMacro()
'ton code

End Sub

'----------------------

'Code à mettre dans Feuil1
Sub Attente()
Range("A1").Select

Call ProgrammerLeProchainEvenementOnTime

End Sub

'----------------------
'Code à mettre dans Feuil1 pour annuler l'événement On Time et exécuter la
macro immédiatement
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Target.Address = "$C$1" Then

If bEnCours = True Then
'annuler l'événement On Time
bEnCours = False
EvenementOnTime

'Exécuter la macro immédiatement et créer un nouvel événement On Time
bEnCours = True
EvenementOnTime
End If


End Sub

'-------------------

'Code à mettre dans ThisWorkBook pour annuler l'événement On Time avant de
quitter
Private Sub Workbook_BeforeClose(Cancel As Boolean)

If bEnCours = True Then
bEnCours = False
EvenementOnTime
End If

End Sub

'--------------------------

"Stéphan DuQuébec" wrote in
message news:

C'est très exactement ce que je voulais dire docm.

Bypasser.....anglicisme typiquement québécois......


de 10 secondes avant de passer à une nouvelle opération. Mais m'est-il
possible de "bypasser" l'attente de 10 secondes advenant que
l'utilisateur



saisisse une donnée disons en C1 avant la fin du délai.


Par "bypasser" l'attente de 10 secondes, veux-tu dire que tu veux
exécuter


immédiatement la macro sans attendre que les 10 secondes soient écoulées
?





Avatar
Stéphan DuQuébec
Bonsoir docm,

Ta procédure me semble longue & complexe.

Je prends le temps de bien la comprendre avant de l'utiliser.

Je ne voulais cependant pas attendre pour te remercier de tes bons conseils.

Je reviendrai clore cette ficelle pour confirmer le bon fonctionnement.

Merci !


Re-bonjour Stephan

Voici le code qu'il faut.

'----------------------
'Code à mettre dans Module1
Global bEnCours As Boolean
Global HeureProchainAppel

Sub EvenementOnTime()
If bEnCours = False Then
'Annuler le paramétrage du OnTime programmé précédemment.
On Error Resume Next
Application.OnTime EarliestTime:=HeureProchainAppel, _
Procedure:="EvenementOnTime", Schedule:úlse
Exit Sub
End If

Call AutreMacro

Call ProgrammerLeProchainEvenementOnTime


End Sub
'----------------------

Sub ProgrammerLeProchainEvenementOnTime()
'Prochain OnTime

HeureProchainAppel = Now + TimeValue("00:00:10")
Application.OnTime HeureProchainAppel, "EvenementOnTime", False
bEnCours = True

End Sub


Sub AutreMacro()
'ton code

End Sub

'----------------------

'Code à mettre dans Feuil1
Sub Attente()
Range("A1").Select

Call ProgrammerLeProchainEvenementOnTime

End Sub

'----------------------
'Code à mettre dans Feuil1 pour annuler l'événement On Time et exécuter la
macro immédiatement
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Target.Address = "$C$1" Then

If bEnCours = True Then
'annuler l'événement On Time
bEnCours = False
EvenementOnTime

'Exécuter la macro immédiatement et créer un nouvel événement On Time
bEnCours = True
EvenementOnTime
End If


End Sub

'-------------------

'Code à mettre dans ThisWorkBook pour annuler l'événement On Time avant de
quitter
Private Sub Workbook_BeforeClose(Cancel As Boolean)

If bEnCours = True Then
bEnCours = False
EvenementOnTime
End If

End Sub

'--------------------------

"Stéphan DuQuébec" wrote in
message news:

C'est très exactement ce que je voulais dire docm.

Bypasser.....anglicisme typiquement québécois......


de 10 secondes avant de passer à une nouvelle opération. Mais m'est-il
possible de "bypasser" l'attente de 10 secondes advenant que
l'utilisateur



saisisse une donnée disons en C1 avant la fin du délai.


Par "bypasser" l'attente de 10 secondes, veux-tu dire que tu veux
exécuter


immédiatement la macro sans attendre que les 10 secondes soient écoulées
?










Avatar
docm
Je n'ai peut-être pas bien compris ta demande. Désires-tu que ta macro
s'exécute une seule fois ou bien qu'elle s'exécute toutes les 10 secondes
indéfiniment?

"Stéphan DuQuébec" wrote in
message news:
Bonsoir docm,

Ta procédure me semble longue & complexe.

Je prends le temps de bien la comprendre avant de l'utiliser.

Je ne voulais cependant pas attendre pour te remercier de tes bons
conseils.


Je reviendrai clore cette ficelle pour confirmer le bon fonctionnement.

Merci !


Re-bonjour Stephan

Voici le code qu'il faut.

'----------------------
'Code à mettre dans Module1
Global bEnCours As Boolean
Global HeureProchainAppel

Sub EvenementOnTime()
If bEnCours = False Then
'Annuler le paramétrage du OnTime programmé précédemment.
On Error Resume Next
Application.OnTime EarliestTime:=HeureProchainAppel, _
Procedure:="EvenementOnTime", Schedule:úlse
Exit Sub
End If

Call AutreMacro

Call ProgrammerLeProchainEvenementOnTime


End Sub
'----------------------

Sub ProgrammerLeProchainEvenementOnTime()
'Prochain OnTime

HeureProchainAppel = Now + TimeValue("00:00:10")
Application.OnTime HeureProchainAppel, "EvenementOnTime", False
bEnCours = True

End Sub


Sub AutreMacro()
'ton code

End Sub

'----------------------

'Code à mettre dans Feuil1
Sub Attente()
Range("A1").Select

Call ProgrammerLeProchainEvenementOnTime

End Sub

'----------------------
'Code à mettre dans Feuil1 pour annuler l'événement On Time et exécuter
la


macro immédiatement
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Target.Address = "$C$1" Then

If bEnCours = True Then
'annuler l'événement On Time
bEnCours = False
EvenementOnTime

'Exécuter la macro immédiatement et créer un nouvel événement On
Time


bEnCours = True
EvenementOnTime
End If


End Sub

'-------------------

'Code à mettre dans ThisWorkBook pour annuler l'événement On Time avant
de


quitter
Private Sub Workbook_BeforeClose(Cancel As Boolean)

If bEnCours = True Then
bEnCours = False
EvenementOnTime
End If

End Sub

'--------------------------

"Stéphan DuQuébec" wrote in
message news:

C'est très exactement ce que je voulais dire docm.

Bypasser.....anglicisme typiquement québécois......


de 10 secondes avant de passer à une nouvelle opération. Mais
m'est-il





possible de "bypasser" l'attente de 10 secondes advenant que
l'utilisateur



saisisse une donnée disons en C1 avant la fin du délai.


Par "bypasser" l'attente de 10 secondes, veux-tu dire que tu veux
exécuter


immédiatement la macro sans attendre que les 10 secondes soient
écoulées




?










Avatar
Stéphan DuQuébec
Bonjour docm,

En fait, je désire qu'elle soit effectivement répétée à toutes les 10
secondes mais pas indéfiniment. J'ai un compteur (macro) qui dénombre les
réponses jugées bonnes (entrées de l'utilisateur avant la fin du délai de 10
secondes) et qui interrompt tout le processus à un certain nombre de bonnes
réponses. Après avoir assez bien lu ta procédure fournie hier, elle ne
correspond pas parfaitement à ce que je voulais mais je tente (en vain
jusqu'à maintenant mais je ne déséspère pas) de l'adapter à mon besoin
initial.

Merci et bonne journée !


Je n'ai peut-être pas bien compris ta demande. Désires-tu que ta macro
s'exécute une seule fois ou bien qu'elle s'exécute toutes les 10 secondes
indéfiniment?

"Stéphan DuQuébec" wrote in
message news:
Bonsoir docm,

Ta procédure me semble longue & complexe.

Je prends le temps de bien la comprendre avant de l'utiliser.

Je ne voulais cependant pas attendre pour te remercier de tes bons
conseils.


Je reviendrai clore cette ficelle pour confirmer le bon fonctionnement.

Merci !


Re-bonjour Stephan

Voici le code qu'il faut.

'----------------------
'Code à mettre dans Module1
Global bEnCours As Boolean
Global HeureProchainAppel

Sub EvenementOnTime()
If bEnCours = False Then
'Annuler le paramétrage du OnTime programmé précédemment.
On Error Resume Next
Application.OnTime EarliestTime:=HeureProchainAppel, _
Procedure:="EvenementOnTime", Schedule:úlse
Exit Sub
End If

Call AutreMacro

Call ProgrammerLeProchainEvenementOnTime


End Sub
'----------------------

Sub ProgrammerLeProchainEvenementOnTime()
'Prochain OnTime

HeureProchainAppel = Now + TimeValue("00:00:10")
Application.OnTime HeureProchainAppel, "EvenementOnTime", False
bEnCours = True

End Sub


Sub AutreMacro()
'ton code

End Sub

'----------------------

'Code à mettre dans Feuil1
Sub Attente()
Range("A1").Select

Call ProgrammerLeProchainEvenementOnTime

End Sub

'----------------------
'Code à mettre dans Feuil1 pour annuler l'événement On Time et exécuter
la


macro immédiatement
Private Sub Worksheet_Change(ByVal Target As Excel.Range)

If Target.Address = "$C$1" Then

If bEnCours = True Then
'annuler l'événement On Time
bEnCours = False
EvenementOnTime

'Exécuter la macro immédiatement et créer un nouvel événement On
Time


bEnCours = True
EvenementOnTime
End If


End Sub

'-------------------

'Code à mettre dans ThisWorkBook pour annuler l'événement On Time avant
de


quitter
Private Sub Workbook_BeforeClose(Cancel As Boolean)

If bEnCours = True Then
bEnCours = False
EvenementOnTime
End If

End Sub

'--------------------------

"Stéphan DuQuébec" wrote in
message news:

C'est très exactement ce que je voulais dire docm.

Bypasser.....anglicisme typiquement québécois......


de 10 secondes avant de passer à une nouvelle opération. Mais
m'est-il





possible de "bypasser" l'attente de 10 secondes advenant que
l'utilisateur



saisisse une donnée disons en C1 avant la fin du délai.


Par "bypasser" l'attente de 10 secondes, veux-tu dire que tu veux
exécuter


immédiatement la macro sans attendre que les 10 secondes soient
écoulées




?