IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Comment faire parler un écart entre deux dates !


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 575
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 575
    Par défaut Comment faire parler un écart entre deux dates !
    Bonjour à toutes et à tous,

    Avec mon test j'arrive à dire l'écart entre deux dates (pour le mois de février) pour une application qui me permettrait de savoir mois par mois combien de jours il reste avant de percevoir ma pension.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    dim Madate, lecture
     
    Madate =  DateSerial(2024,02,22) 
     
    Set lecture=CreateObject("sapi.spvoice")
    lecture.rate=1
     
    Texte= "Plus que " & DateDiff("d",now,Madate) & " Jours"  & vbCrlf & " Avant le " & Madate
     
    lecture.speak texte
    Hors j'aurai aimé le faire pour les 12 mois de l'année puisque je connais les dates de payement :

    ex : Quand nous serons au mois de mars le 18 il restera 3 jours avant de toucher.

    Janvier 24/01/2024

    Février 22/02/2024

    Mars 21/03/2024

    Avril 23/04/2024

    Mai 23/05/2024

    Juin 21/06/2024

    Juillet 24/07/2024

    Août 23/08/2024

    Septembre 23/09/2024

    Octobre 24/10/2024

    Novembre 22/11/2024

    Décembre 20/12/2024
    Je n'aimerai pas recopier 12 x Madate.

    Si quelqu'un avait une solution plus restreinte, merci d'avance.

    @+,

    cincap

  2. #2
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Salut

    Je n'aimerai pas recopier 12 x Madate.
    Étant donné que le jour de chaque mois n'est pas le même, impossible de faire autrement.
    Ou du moins peut être de cette façon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    dim lecture
     
    Set lecture=CreateObject("sapi.spvoice")
    lecture.rate=1
     
    dim MesDate(12),TheMois
     
    For t = 1 to 12
            select case t
                    Case 12: MesDate(t) = DateSerial(2024,int(t),20)
                    Case 3,6: MesDate(t) = DateSerial(2024,int(t),21)
                    case 2,11: MesDate(t) = DateSerial(2024,int(t),22)
                    case 4,5,8: MesDate(t) = DateSerial(2024,int(t),23)
                    Case 1,7,10: MesDate(t) = DateSerial(2024,int(t),24)
            end select
    next
     
    'exemple d'utilisation pour le mois en cours
    TheMois = Month(Now)
    lecture.speak "Plus que " & DateDiff("d",now,MesDate(TheMois)) & " Jours"  & vbCrlf & " Avant le " & MesDate(TheMois)
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 575
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 575
    Par défaut
    @ ProgElect, Merci pour ta solution, chapeau bas et astucieux du 1er coup cela fonctionne.

    Certainement en 2025 je devrai peut-être modifier un peu car ce n'est jamais le même jour le même mois.

    J'avais fait le test avec un tableau en Delphi et cela fonctionnait aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     public
        { Déclarations publiques }
         DatesLimite: array [1..12] of TDateTime;
      end;
     
    procedure TForm1.InitializeDatesLimite;
    begin
     
      DatesLimite[1] := EncodeDate(2024, 1, 24);
      DatesLimite[2] := EncodeDate(2024, 2, 22);
      DatesLimite[3] := EncodeDate(2024, 3, 21);
      DatesLimite[4] := EncodeDate(2024, 4, 23);
      DatesLimite[5] := EncodeDate(2024, 5, 23);
      DatesLimite[6] := EncodeDate(2024, 6, 21);
      DatesLimite[7] := EncodeDate(2024, 7, 24);
      DatesLimite[8] := EncodeDate(2024, 8, 23);
      DatesLimite[9] := EncodeDate(2024, 9, 23);
      DatesLimite[10] := EncodeDate(2024, 10, 24);
      DatesLimite[11] := EncodeDate(2024, 11, 22);
      DatesLimite[12] := EncodeDate(2024, 12, 20);
     
    end;
    Encore merci, je peux continuer mes tests

    @+,

    cincap

  4. #4
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Salut

    Complément pour toutes situations dans l'année 2024
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    dim lecture
     
    Set lecture=CreateObject("sapi.spvoice")
    lecture.rate=1
     
    dim MesDate(12),TheMois,DatePension,DateCeJour
     
    For t = 1 to 12
            select case t
                    Case 12: MesDate(t) = DateSerial(2024,int(t),20)
                    Case 3,6: MesDate(t) = DateSerial(2024,int(t),21)
                    case 2,11: MesDate(t) = DateSerial(2024,int(t),22)
                    case 4,5,8: MesDate(t) = DateSerial(2024,int(t),23)
                    Case 1,7,10: MesDate(t) = DateSerial(2024,int(t),24)
            end select
    next
     
    'exemples d'utilisation
    DateCeJour = Now                                'date du jours
    'DateCeJour = cdate("29/02/2024")          'date quelque jours après échéance du mois en cours
    'DateCeJour = cdate("29/12/2024")          'date au delà de l'année 2024
    TheMois = Month(DateCeJour)
    if DateCeJour > MesDate(TheMois) then
            TheMois = TheMois + 1
            if TheMois > 12 then
                    lecture.speak "Je ne sais pas faire le calcul au delà de l'année 2024"
                    WScript.Quit
            end if
    end if
    DatePension = MesDate(TheMois)
     
    if DateCeJour = DatePension then
            lecture.speak "Les sousous arrive aujourd'hui"
    else
            lecture.speak "Plus que " & DateDiff("d",DateCeJour,DatePension) & " Jours"  & vbCrlf &_
            " Avant le " & DatePension
    end if
    Mettre en commentaire, à tour de rôle, les lignes 19, 20 et 21
    Au final, seules les lignes 20 et 21 doivent être mises en commentaire.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 540
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 540
    Par défaut
    Il me semble plus simple pour les mises à jour, d'avoir les 12 lignes pour les 12 mois.
    Une amélioration sera peut-être d'avoir un fichier texte (par an par exemple) à côté du script, dans lequel se trouverait les dates (façon csv).
    Le script lirait et chargerait les dates depuis le fichier selon l'année en cours (que l'on récupèrerait par Year(Now) )

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 575
    Détails du profil
    Informations personnelles :
    Âge : 72
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 575
    Par défaut
    Bonjour à toutes et à tous,

    @ ProgElect, merci pour ta suggestion (j'ai rit avec les sousous) mais les dates de payement ne changent parfois que d'un jour lors d'une nouvelle année.

    Ex: en 2022 en octobre c'était le 24/10/2022 (la même qu'en 2024) et en novembre c'était le 23/11/2022 et en décembre le 21/12/2022.

    Sinon l'idée de umfred que je remercie me parait intéressante.

    Tant que l'on y est, j'ai remarqué dans un message box :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    inputbox("Comment vas tu ?","Selection") je ne sais pas mettre le caractère é
    Dans un fichier .bat c'est possible (chcp 65001 > nul).

    Modification !

    Désolé, voici mon texte résolu il y a peut-être mieux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     testX = inputbox("Comment vas tu ?","S"& chr(233) &"lection")
    Merci pour tous vos commentaires,

    @+,

    cincap

Discussions similaires

  1. [AC-2010] Comment bloquer un matériel loué entre deux dates ?
    Par Founi84 dans le forum Modélisation
    Réponses: 13
    Dernier message: 02/04/2015, 11h41
  2. [SPS07] Comment faire un filtre entre deux dates ?
    Par Tybo34 dans le forum Développement Sharepoint
    Réponses: 11
    Dernier message: 23/07/2010, 09h42
  3. Réponses: 2
    Dernier message: 29/05/2006, 19h16
  4. Comment obtenir la différence entre deux dates ?
    Par jbat dans le forum Langage
    Réponses: 4
    Dernier message: 02/06/2005, 09h34
  5. comment obtenir l’intervalle de mois entre deux date
    Par looc 6699 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/02/2005, 11h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo