Demain ma petite amie va avoir ses 18 ans, j’ai eu la subite envie de lui faire une ptite connerie pour la faire rire demain matin ( elle est née a 9h30 ) et sachant que je bosse a cette heure la je pourrais pas l’appeler
Mon code est assez bête ( j’ai commencé le VBS hier vers 23h ^^ ) En fait j’aimerai que des passé 9h30 un message apparaisse sur son PC, son arrière plan change ca je sais le faire j’ai prévu de faire une boucle pour qu’il teste en continue pour l’heure . J’arriverai a lui faire mette au démarrage ( BDR ) je lui ferais téléchargé sur un serveur FTP l’arrière plan comme ca elle ne se doutera de rien . j’ai pensé aussi a lui faire jouer une musique mais bon ca j’ai encore quelque heure devant moi pour peaufiner
J’ai voulu tenté en utilisant une condition avec plusieur AND pour qu’il teste le mois le jour l’année et l’heure cependant je suis confronté a un problème si elle allume son PC a 9h31 le code ne fonctionnera pas j’ai donc remplacé les ANDs de l’heure et des minutes par des “>=” mais je suis confronté a un autre problème arrivé a 10h ca ne fonctionnera pas car les minute seront inférieure a 30
Existe t il un moyen pour lui qu’il fasse en gros Si minute <30 mais que heure >9 alors exécuté le code ?
Je suis désolé si c’est le fouilli j’ai encore pas mal de boulot a faire mais je garde espoir
Le code n’est qu’a l’état de test la première partie ne sera pas dans le code final bien entendu
Les MsgBox OK et No seront remplacé par les instructions que je lui donnerai a faire
WScript.Echo Day(Now)& "."& Month(Now)& "."& Year(Now)& " "& Hour(Now)& ":"& Minute(Now)& ":"& Second(Now)
if Year(now) = 2008 AND Month(now) = 07 AND Day(now) = 10 AND Hour(now) >= 9 AND Minute(now) >= 30 Then
MsgBox "OK!"
Else
MsgBox "NO!"
end if
Merci d’avance et désolé si c’est vraiment le bordel mon code ^^
Après réflexion j’ai essayé un OR aprés le test pour les minutes ca donne donc si minute <= 30 Ou heure <=10 alors exécuter instruction
if Year(now) = 2008 AND Month(now) = 07 AND Day(now) = 10 AND Hour(now) >= 9 AND Minute(now) >= 30 OR Hour(now) >= 10 Then
Je laisse le message on sait jamais ca pourra servir a quelqu’un ^^
Edit : En faite c’est pas bon le ou casse tout j’ai remis mon système a la bonne date et vu qu’il est plus de dix heure ca s’exécute
Edit2 : J’ai réajouté les condition d’année de mois et de jour après le or et ça fonctionne ce qui donne
]if Year(now) = 2008 AND Month(now) = 07 AND Day(now) = 10 AND Hour(now) >= 9 AND Minute(now) >= 30 OR Hour(now) >= 10 AND Year(now) = 2008 AND Month(now) = 07 AND Day(now) = 10 Then [quote=""]
Une date, c’est stocké sous forme d’un nombre décimal, dans lequel la partie entière représente le nombre de jours écoulés, et la partie décimale les heures minutes secondes à l’intérieur de ce jour (sous forme de fraction de jour).
essaie de faire
x = now(), puis x=x+1, tu verras que ru as progressé d’un jour
x = now() puis x=x + 0.5, tu auras progressé de 12h
Bien sûr tu peux jouer aussi sur les égalités/inégalités
x=now()
x = x + 4 '4 jours plus tard
while now() < x
…
wend
Pour utiliser une date déterminée, on fait la conversion d’un texte (format de date valide) avec Cdate
x = Cdate(“2008/07/14 22:30:00”)
Le code est quasiment fini il me reste a mettre en place la boucle mais j’arrive pas a savoir laquelle utilisé
Je voulais utilise un Do Loop comme ceci
Do
Si condition ok exécuté code, en fin de code y’a un exit do
Si condition pas ok Loop
Mais il me dit qu’il manque loop …
Rahh j’en ai marre :@ Pas moyen de comprendre y’a pas un goto like en VBS ?
Faut encore que je fasse le code d’installation , le txt pour le ftp et que je trouve un ftp que je teste tout ca sur un autre poste et il me reste 3 heure grand maximum :’(
Edité le 09/07/2008 à 20:53
Je ne suis pas spécialiste de vbs, je connais mieux le vba, mais je pense que c’est la même chose à ce niveau :
Il ne doit pas exister de syntaxe do … loop
tu as do while … loop
do until … loop
do … loop while
do … loop until
Et tu ne devrais pas avoir besoin de sortie forcée (exit do)
Si tu n’y arrives pas avec une de ces méthodes, poste le bout de code qui te pose problème
Tu veux attendre l’heure fatidique sans rien faire ?
while now < x
sleep(60000)
wend
(action)
autre syntaxe
do while now < x
sleep(60000)
loop
(action)
Edit:
Ton code est arrivé pendant que j’écrivais
Ce que je te propose remplace les 2 premières lignes ; ensuite ça devrait être bon, je pense que tu as déjà testé le reste compte tenu des MsgBox qui s’y trouvent
Edit 2 :
N’oublie pas d’enlever le endif à la fin !
Edité le 09/07/2008 à 21:13
1- Now est déjà une date, pas besoin de le repasser dans Cdate
2- to y ne change jamais de valeur, tu peux donc le définir ue fois pour toutes en dehors de la boucle
3- si tu veux que le test se fasse par rapport à l’heure courante, il te faut calculer x au dernier moment, et pas avant le sleep(), sinon tu auras un décalage d’une minute
x = now
y = Cdate("2008/07/10 09:30:00")
Do While x < y
WScript.Sleep(1000)
x = CDate (now)
loop
tu peux même encore simplifier
y = Cdate("2008/07/10 09:30:00")
Do While now < y
WScript.Sleep(1000)
loop
Tous les VBx sont de la même famille
Après, c’est l’environnement d’utilisation qui change
Le VBS, tu l’utilises directement, un peu comme un .bat (ou comme un exécutable compilé).
Le VBA c’est le langage de programmation associé aux produits microsoft comme excel, word, powerpoint etc.
Attention le vba d’excel n’est pas (tout à fait) le même que celui de word ou d’acces …
Par exemple, ton programme en vba excel:
tu ouvres excel, tu rentres la date cible dans la cellule A1
tu vas dans le vba, workbook, open et tu ecris ta fonction
Private Sub Workbook_Open()
Do While now < Range("A1")
Sleep(1000)
loop
(action)
End Sub