Je me permets de poster sur ce forum car je débute en VBS et j'ai du mal à débugger mon premier script ^^.
J'aimerais récupérer le dernier jour du mois en cours:
J'ai vu dans un vieux post du site du zéro que pour réaliser un tel script il faut tester sir le mois comporte 31 jours et tester pour le mois de février si l'année est bissextile.
Voici mon code (bon c'est mon premier script VBS donc je ne suis pas DU TOUT sûr de certaine chose) :
Public Function EstPair(month As Long) As Boolean
EstPair (month Mod 2) 0
End Function
Public Function EstBisex(year As Long) As Boolean
EstPair (year Mod 4) 0
End Function
Dim month
Dim year
Dim DernierJourDuMoi
year = cint (year(now))
month = cint (month(now))
if (EstPaire(month) = true) then
if(month = 8) then
DernierJourDuMoi = 31
end if
if (EstBisex(year)true and month 2) then
DernierJourDuMoi = 29
else
DernierJourDuMoi = 28
end if
DernierJourDuMoi = 30
else
DernierJourDuMoi = 31
end if
msqbox ("Le dernier jour du mois de :"& month(now) & _" est :" &DernierJourDuMoi&)
Tout d'abord j'ai créé deux fonctions :
- Test du mois impaire ou paire
- Test de l'année bissextile
J'ai créé trois variables dont deux ou je récupère l'année et le mois que je converti en int (je ne sais pas si il faut faire comme cela), et mon test dans ma boucle if..
J'ai beaucoup de mal à débugger ce script sachant qu'à la première ligne j'ai déjà une erreur dans la fonction avec le As long.
Merci d'avance pour l'aide que l'on pourrait m'apporter afin de m'améliorer.
2) Dans ces conditions : un simple rappel élémentaire : le dernier jour du mois en cours n'est jamais rien d'autre que
le premier jour du mois suivant moins un jour
.
C'EST ta réponse (et elle est simple).
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Fonction DateSerial (script56.chm) : Renvoie un Variant de sous-type Date pour une année, un mois et un jour spécifiés.
DateSerial(year, month, day)
Arguments
year : Nombre compris entre 100 et 9999 inclus, ou une expression numérique.
month : Toute expression numérique.
day : Toute expression numérique.
Notes :
Pour spécifier une date telle que le 31 décembre 1991, la plage des nombres pour chaque argument DateSerial doit être normalement comprise dans la plage acceptée pour l'unité ; autrement dit, 1–31 pour les jours et 1–12 pour les mois. Toutefois, vous pouvez aussi spécifier des dates relatives pour chaque argument en utilisant toute expression numérique représentant un certain nombre de jours, de mois ou d'années antérieurs ou postérieurs à une date donnée.
L'exemple suivant utilise des expressions numériques à la place des nombres absolus de date. Ici, la fonction DateSerial renvoie une date correspondant au jour précédant le premier jour (1 - 1), deux mois précédant le mois d'août (8 - 2), 10 ans avant 1990 (1990 - 10) ; en d'autres termes, le 31 mai 1980.
Dim MyDate1, MyDate2
MyDate1 = DateSerial(1970, 1, 1) ' Renvoie 1 janvier 1970.
MyDate2 = DateSerial(1990 - 10, 8 - 2, 1 - 1) ' Renvoie 31 mai 1980.
Pour le thème : Visual Basic 6 > Langages dérivés > VBScript
Tout à fait vbs n'est pas du .net ou du vb 2005, mais je n'ai pas trouvé de section relative au scripting dans le Forum (ou alors j'ai très mal cherché).
En tout cas merci beaucoup, c'est tout de suite plus simple comme cela .
UTC time to run the job. This is of the form YYYYMMDDHHMMSS.MMMMMM(+-)OOO, where YYYYMMDD must be replaced by ********. Example: ********123000.000000-420, which implies 12:30 P.M. Pacific time with daylight saving time in effect.
J'aimerais poster autre chose sur du vbs, mais je ne trouve pas de section adéquate, est-ce normal?
Visual Basic / Langages dérivés / VBScript ne te parait pas suffisamment clair ?
Ton second problème est distinct du premier, qui, lui, traite du Récupération du "dernier jour du mois en cours" ===>> une discussion distincte s'impose (dans la bonne section, s'il te plait, maintenant que tu la connais).
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Voilà mon code pour les intéressés, il ne reste plus qu'à ajouter tout cela à la création de la tâche planifié.
Dim uneDate
Dim mTab
Dim final
uneDate = FormatDateTime(DateSerial(Year(Date),Month(Date)+1,1)-1,vbShortDate)
mTab = Split(Cstr (uneDate), "/")
MsgBox mTab(1)
MsgBox mTab(2)
MsgBox mTab(0)
final = (mTab(2)+mTab(1)+mTab(0))
msgBox (final)
assez surprenant d'utiliser le split pour extraire l'année, le mois et le jour alors que tu as déjà l'année (year), le mois (month) et le jour (day) ...
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Non. Tu étais dans la section Forum > VB.NET et VB 2005 y as été déplacé vers la bonne par un administrateur bienveillant.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.