Faire une boucle qui dure quelques secondes

Faire une boucle qui dure quelques secondes - VB/VBA/VBS - Programmation

Marsh Posté le 27-06-2007 à 11:23:39    

Bonjour tout le monde
 
Voila je voudrais creer une boucle qui dure quelques secondes.
Voici mon script:
 

Code :
  1. <script language=vbscript>
  2. <!--
  3. Sub buttongReceiptData_OnClick()
  4. objet.Fonctionquicreeundossieryyyymmdd()
  5. if (Month(now) < 10 ) then
  6.  m = "0" + Cstr(Month(now))
  7. else
  8.  m = Cstr(Month(now))
  9. end if
  10. if (Day(now) < 10 ) then
  11.  d  = "0" + Cstr(Day(now))
  12. else
  13.  d  = Cstr(Day(now))
  14. end if
  15. temp = Cstr(Year(now)) + m + d
  16. Open("C:\VIDEOARCHIV\" + temp)
  17. end sub
  18. -->
  19. </script>


 
Le probleme est que le dossier n est pas cree assez rapidement, et lors de l execution de cette ligne:  Open("C:\VIDEOARCHIV\" + temp) , le dossier n est pas present sur mon disque dur.
 
J avais donc pense a une boucle qui dure quelques secondes avant cette ligne, comme ca le dossier aurait le temps d etre cree.
 
Savez vous si une telle chose est possible ?


Message édité par Profil supprimé le 27-06-2007 à 12:16:00
Reply

Marsh Posté le 27-06-2007 à 11:23:39   

Reply

Marsh Posté le 27-06-2007 à 12:31:34    

Ou peut etre un sleep, quelque chose dans le genre ?
 
Je trouve pas :s

Reply

Marsh Posté le 27-06-2007 à 12:44:27    

Sachant que le sleep ne fonctionne pas :o
 
genre sleep 1000
 
J ai un message d'erreur: Type mismatch: 'sleep'

Reply

Marsh Posté le 27-06-2007 à 15:44:47    

do while dir(tonfichier)<>""  
loop
:)

Reply

Marsh Posté le 27-06-2007 à 19:33:20    

jpcheck a écrit :

do while dir(tonfichier)<>""  
loop
:)


 
Le probleme est que je ne connais pas le nom du fichier, il est cree aleatoirement :o
 
enfin quand je tente ca:
 

Code :
  1. <script language=vbscript>
  2. <!--
  3. Sub buttongReceiptData_OnClick()
  4. objet.Fonctionquicreeundossieryyyymmdd()
  5. if (Month(now) < 10 ) then
  6.  m = "0" + Cstr(Month(now))
  7. else
  8.  m = Cstr(Month(now))
  9. end if
  10. if (Day(now) < 10 ) then
  11.  d  = "0" + Cstr(Day(now))
  12. else
  13.  d  = Cstr(Day(now))
  14. end if
  15. temp = Cstr(Year(now)) + m + d
  16.         do while dir("C:\VIDEOARCHIV\" + temp + "\*.jpg" ) <> "" 
  17.         loop
  18. Open("C:\VIDEOARCHIV\" + temp)
  19. end sub
  20. -->
  21. </script>


 
Internet Explorer me sort le message d erreur suivant : Error: Type mismatch: 'dir'
 
 :pt1cable:


Message édité par Profil supprimé le 27-06-2007 à 19:33:33
Reply

Marsh Posté le 27-06-2007 à 21:51:11    

Oups !


Message édité par galopin01 le 27-06-2007 à 21:54:08
Reply

Marsh Posté le 28-06-2007 à 00:03:17    

deja, j'avais po vu que c'était pour vbscript... galopin tu as une idée ?

Reply

Marsh Posté le 28-06-2007 à 05:44:28    

Non, j'étais parti sur DoEvents, mais vbscript n'est pas ma tasse de thé, c'est pourquoi j'ai supprimé...

Reply

Marsh Posté le 28-06-2007 à 08:06:30    

galopin01 a écrit :

Non, j'étais parti sur DoEvents, mais vbscript n'est pas ma tasse de thé, c'est pourquoi j'ai supprimé...


Code :
  1. Function GoSleep(seconds)
  2.    '
  3.    ' Check the Windows Script Host Version.
  4.    '
  5.    wsv = WScript.Version
  6.    '
  7.    ' If it's 5.1 or newer, use the built-in Sleep command,
  8.    ' since it might be more reliable or better-performing.
  9.    '
  10.    if wsv >= "5.1" then
  11.       WScript.Sleep(seconds * 1000)
  12.    else
  13.      '
  14.      ' If the version isn't at least 5.1, use a quick-and-dirty
  15.      ' method of determining the elapsed time since the function
  16.      ' was called.
  17.      '
  18.      startTime = Time() ' gets the current time
  19.      endTime = TimeValue(startTime) + TimeValue(elapsed) ' calculates when time is up
  20.      '
  21.      ' While the current time is less than the calculated end time,
  22.      ' add zero to x.
  23.      '
  24.      While endTime > Time()
  25.          '
  26.          ' If there's nothing in here but a comment, the while
  27.          ' doesn't seem to process correctly, so we'll just tell
  28.          ' VBScript that we need it to let Windows do other things
  29.          ' for a little while...
  30.          '
  31.          DoEvents
  32.      Wend
  33.    end if
  34. End Function

Reply

Marsh Posté le 28-06-2007 à 15:11:01    

Salut :)
 
Alors voila mon code:
 
 

Code :
  1. <script language=vbscript>
  2. <!--
  3. Function GoSleep(seconds)
  4.   wsv = WScript.Version
  5.   if wsv >= "5.1" then
  6.      WScript.Sleep(seconds * 1000)
  7.   else
  8.     startTime = Time()
  9.     endTime = TimeValue(startTime) + TimeValue(elapsed)
  10.    
  11.     While endTime > Time()
  12.         DoEvents
  13.     Wend
  14.   end if
  15. End Function
  16. Sub buttongReceiptData_OnClick()
  17. objet.Fonctionquicreeundossieryyyymmdd()
  18. GoSleep(3)
  19. if (Month(now) < 10 ) then
  20.  m = "0" + Cstr(Month(now))
  21. else
  22.  m = Cstr(Month(now))
  23. end if
  24. if (Day(now) < 10 ) then
  25.  d  = "0" + Cstr(Day(now))
  26. else
  27.  d  = Cstr(Day(now))
  28. end if
  29. temp = Cstr(Year(now)) + m + d
  30. Open("C:\VIDEOARCHIV\" + temp)
  31. end sub
  32. -->
  33. </script>


 
Ca ne fonctionne toujours pas, message d'erreur: Object required:'WScript'
 
J'oublie peut etre d'inclure quelque chose ? Ou alors j'insere la fonction au mauvais endroit ?


Message édité par Profil supprimé le 28-06-2007 à 15:12:38
Reply

Marsh Posté le 28-06-2007 à 15:11:01   

Reply

Marsh Posté le 28-06-2007 à 15:18:29    

regarde "objet.Fonctionquicreeundossieryyyymmdd()" histoire de la faire tourner en synchrone surtout.
 
effectivement, si tu crées un dossier avec FSO par exemple, t'as pas de problème, car "CreateDirectory()" te rend la main quand le répertoire est effectivement créé.

Reply

Marsh Posté le 28-06-2007 à 15:23:33    

MagicBuzz a écrit :

regarde "objet.Fonctionquicreeundossieryyyymmdd()" histoire de la faire tourner en synchrone surtout.
 
effectivement, si tu crées un dossier avec FSO par exemple, t'as pas de problème, car "CreateDirectory()" te rend la main quand le répertoire est effectivement créé.


 
Elle tourne en synchrone oui  :jap:

Reply

Marsh Posté le 28-06-2007 à 15:29:17    

Ben c'est bizarre ton histoire... Si c'est synchrone, alors à la sortie de l'appel le répertoire doit être créé, sinon y'a un léger souci...

Reply

Marsh Posté le 28-06-2007 à 15:35:41    

MagicBuzz a écrit :

Ben c'est bizarre ton histoire... Si c'est synchrone, alors à la sortie de l'appel le répertoire doit être créé, sinon y'a un léger souci...


 
Oui, le dossier est correctement cree, c'est juste qu'avec la suite du script quand je clique sur le bouton, le dossier n'a pas le temps d'etre cree lorsque la ligne qui l'ouvre s'execute tu vois ?

Reply

Marsh Posté le 28-06-2007 à 15:44:40    

non justement je vois pas :o
 
tu me dis que la fonction qui crée le dossier est synchrone. donc si c'est le cas, c'est impossible ce que tu me dis, puisque la fonction rendra la main quand le dossier aura effectivement été créé sur le disque, et pas avant...
 
pour moi c'est dans ta fonction qu'il faut que t'aille voire ce qu'il se passe

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed