Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Appliquer une pause jusqu'à un évènement temporel

  • Initiateur de la discussion Initiateur de la discussion AzoR
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

AzoR

XLDnaute Occasionnel
Bonjour !

Je poste ce petit message car j'ai du mal à faire un truc tout bête je pense ...

J'ai un programme avec des acquisitions qui durent environ 15s et qui se répète pendant un certain temps "b" (choisi par l'utilisateur) grâce à cette ligne :

While Time < debut + TimeSerial(0, b, 0)

Donc cela fonctionne très bien.

Or on me demande maintenant de faire en sorte que l'on choisisse une "période", par défaut 30s.
Enfaite l'acquisition devra se faire, durant environ 15s puis le programme devra attendre jusqu'à la fin de cette période, qui ne sera pas tout le temps 30s, on peut le choisir dans la listbox.

Donc avec cet exemple, pour une période de 30s, l'acquisition durera environ 15s, puis le programme devra donc attendre environ 15s.

Je fais donc une variable débutperiode = Time au début de l'acquisition, et ensuite mon problème est de dire au programme qu'il doit ATTENDRE ( et c'est bien là le problème ... ) jusqu'à ce que Now = debutperiode + TimeSerial(0, 0, p) , p étant le temps de la "période" choisi par l'utilisateur dans mon interface.

En gros je voudrais faire : " Tant que le temps de la période n'est pas atteint, attendre, puis continuer " et donc après le continuer le programme rebouclera étant donné qu'il y a le Wend à la fin qui va de paire avec ma ligne "While Time < debut + TimeSerial(0, b, 0)".

J'espère avoir été clair ... 😕

Mon programme est trop gros pour que j'arrive à le joindre mais je pense avoir assez expliquer mon problème.

Merci d'avance ! 😛
 
Re : Appliquer une pause jusqu'à un évènement temporel

Bonjour,

Avec une soustraction ?

VB:
AcquisitionTime = 15
TotalTime = 30
While Time < debut + TimeSerial(0, TotalTime , 0) 
  If Time < debut + TimeSerial(0, AcquisitionTime , 0) Then
    'Acquisition
  End If
WEnd
 
Re : Appliquer une pause jusqu'à un évènement temporel

Bonjour Iznogood1, merci pour ta réponse !

Oui mais le soucis justement comme je l'ai expliqué c'est que mon "TotalTime" ne sera pas toujours 30s, c'est mon "p" pour moi, je remplace par TimeSerial(0, 0, p) du coup ?
Et pareil je ne veux pas avoir une variable "AcquisitionTime" = 15 car ce n'est pas toujours 15s et il faut que ce soit précis donc je ne peux pas fixer ce temps à 15s alors qu'il peut faire 14s comme 16s par exemple.

Cordialement, AzoR
 
Re : Appliquer une pause jusqu'à un évènement temporel

Bonjour Pierrot93,

Oulah .. Je n'ai rien compris à ta phrase 😕 , je vais me renseigner sur "QueryTables" et "BackgroundQuery" alors.
Bonne journée à toi aussi
 
Re : Appliquer une pause jusqu'à un évènement temporel

VB:
Sub test()
  Dim TotalTime As String
  Dim AcquisitionTime As String
  Dim Debut As Date
  
  AcquisitionTime = InputBox("Temps d'acquisition :")
  TotalTime = InputBox("Temps d'éxécution maximum :")

  Debut = Time
  
  While Time <= Debut + TimeSerial(0, 0, CInt(TotalTime))
    If Time <= Debut + TimeSerial(0, 0, CInt(AcquisitionTime)) Then
      'Acquisition
    End If
  Wend

End Sub
 
Re : Appliquer une pause jusqu'à un évènement temporel

Il existe une fonction "Wait" ou autre qui fasse que le programme attende juste un évènement ? ( ici : tant que Time <= Debut + TimeSerial(0, 0, p) WAIT, et après il continue. )
 
Re : Appliquer une pause jusqu'à un évènement temporel

Bah je vais te mettre le code entier qu'il y a entre les deux mais ça ne va pas t'aider ...

 
Re : Appliquer une pause jusqu'à un évènement temporel

Je saisi ces deux temps dans 2 ComboBox de mon interface.

b = UserForm1.ComboBox1.Value ' valeur de temps d'acquisition désiré
p = UserForm1.ComboBox2.Value ' valeur de temps de période désiré

Ma durée totale d'acquisition "b" est en minutes et ma période d'acquisition "p" est en secondes.

Par défaut j'ai mis mes combobox à b = 1 minute et p = 30s
 
Re : Appliquer une pause jusqu'à un évènement temporel

J'ai essayé ça :

periode = TimeSerial(Hour(Time), Minute(Time), Second(Time) + p)

........


If Now < periode Then
Application.Wait (Now - periode)
End If

Mais cela ne fonctionne pas les acquisitions continuent de s'enchainer ...
 
Re : Appliquer une pause jusqu'à un évènement temporel

Re,

regarde peut être ceci, avec un "DoEvents " :
Code:
Option Explicit
Sub test()
Dim p As Integer, s As Single
p = 15
s = Timer
Do While Timer < s + p
    DoEvents    ' Donne le contrôle à d'autres processus.
Loop
End Sub
 
Re : Appliquer une pause jusqu'à un évènement temporel

J'insiste :

Commence ton code par
VB:
Début = Time
While Time < Debut + TimeSerial(0, b, 0) ' avec "b" valeur de temps d'acquisition désiré
  If Time < Debut + TimeSerial(0, 0, p) Then

et termine le par
VB:
  End If
Wend ' While End
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…