Se connecter / S'enregistrer
Votre question

Boucle en vbs

Tags :
  • Shutdown
  • Programmation
Dernière réponse : dans Programmation
5 Avril 2011 19:47:11

Bonjour à tous,

Voilà j'ai fait un petit shutdown perso pour éteindre mon ordinateur au bout d'un certain temps ce qui me permet d'économiser les quelques neurones qui me restent en évitant le calcul en secondes :) 
Voilà le code:
  1. Const ForReading = 1, ForWriting = 2
  2. Set fso = CreateObject("Scripting.FileSystemObject")
  3. Dim heures , code
  4. On Error Resume Next
  5. input = InputBox("Veuillez entrer le temps restant avant l'extinction de l'ordinateur." & vbCrLf & vbCrLf & "Pour annuler une extinction entrer 0" & vbCrLf & vbCrLf & "(En Heures)", "ShutDown By M4g1c1eN")
  6. if input > 0 then
  7. heures = input * 3600
  8. If err.number <> 0 then
  9. MsgBox "Nombre non valide.",vbExclamation,"ShutDown By M4g1c1eN"
  10. Wscript.quit
  11. End if
  12. code = msgbox ("L'ordinateur s'éteindra dans : " & input & " Heure(s)",vbOkCancel+vbExclamation,"ShutDown By M4g1c1eN")
  13. if code = 1 then
  14. Set WshShell = WScript.CreateObject("WScript.Shell" )
  15. WshShell.Run ("%SystemRoot%\System32\shutdown.exe -s -t " & heures), SW_HIDE,true
  16. end if
  17. elseif input = 0 then
  18. Set WshShell = WScript.CreateObject("WScript.Shell" )
  19. WshShell.Run ("%SystemRoot%\System32\shutdown.exe -a"), SW_HIDE,true
  20. end if

Mon problème est que lorsque je tape une valeur qui n'est pas un nombre par exemple: abc ; le message "Nombre non valide" s'affiche et le programme s'arrête.
Hors je voudrai revenir à l'écran principal après l'affichage de ce message.
Je pense qu'il faudrait mettre une boucle du style : do while ou for car le goto n'existe pas en vbs a mon grand regret...

Merci

Autres pages sur : boucle vbs

a c 145 L Programmation
5 Avril 2011 21:41:35

En remplaçant les lignes 6 à 7 par:
  1. mhours = CInt(input)
  2. if (mhours > 0) then
  3. heures = mhours * 3600
m
0
l
5 Avril 2011 22:02:57

Ca ne fonctionne pas dsl :( 
Quel est la fonction de CInt ?

Merci
m
0
l
Contenus similaires
a c 145 L Programmation
5 Avril 2011 23:09:10

CInt converti une chaîne en entier (CastInteger).
Il te faut bien sûr ajouter un else, ou modifier la structure de ton script.
En gros, en castant, tu n'as plus que deux alternatives:
mhours > 0 => C'est un chiffre (ou commence par un chiffre), tu programmes
mhours = 0 => Non valable, tu signales l'erreur. Au cas où, tu rajoutes un petit goto pour retourner à l'attente d'une entrée.
m
0
l
6 Avril 2011 17:46:33

Voilà j'ai finalement trouvé voilà le code pour ceux qui serraient intéressés :
  1. Const ForReading = 1, ForWriting = 2
  2. Set fso = CreateObject("Scripting.FileSystemObject")
  3. Dim heures , code , input
  4. Do
  5. input = InputBox("Veuillez entrer le temps restant avant l'extinction de l'ordinateur." & vbCrLf & vbCrLf & "Pour annuler une extinction entrer 0" & vbCrLf & vbCrLf & "(En Heures)", "ShutDown By M4g1c1eN")
  6. if Not IsNumeric(input) then
  7. MsgBox "Nombre non valide.",vbExclamation,"ShutDown By M4g1c1eN"
  8. end if
  9. Loop While Not IsNumeric(input)
  10. if input > 0 then
  11. heures = input * 3600
  12. code = msgbox ("L'ordinateur s'éteindra dans : " & input & " Heure(s)",vbOkCancel+vbExclamation,"ShutDown By M4g1c1eN")
  13. if code = 1 then
  14. Set WshShell = WScript.CreateObject("WScript.Shell" )
  15. WshShell.Run ("%SystemRoot%\System32\shutdown.exe -s -t " & heures), SW_HIDE,true
  16. end if
  17. elseif input = 0 then
  18. Set WshShell = WScript.CreateObject("WScript.Shell" )
  19. WshShell.Run ("%SystemRoot%\System32\shutdown.exe -a"), SW_HIDE,true
  20. end if


Merci encore
m
0
l
a c 145 L Programmation
6 Avril 2011 22:30:37

Ah oui tiens, j'avais oublié le IsNumeric() :) 
m
0
l
Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS