J'ai beau essayé, mais je n'ai pas réussi à régler ce problème de dates. Je m'explique: le but est d'afficher le nombre de jours restants par rapport au délai prescrit. Il s'agit en fait d'un entrepreneur qui réalise des travaux d'électricité pour ses clients.
Définition des variables:
Debut=Date début des travaux (date numérique)
today= Date du jour (date())
delai= Délai de réalisation des travaux en nombre de jours (valeur numérique indiquant le nombre de jous)
Datemax=Date limite fixée indiquant la fin des travaux (elle est donc égale à date début des travaux + le délai fixé
Ce que je dois afficher en permanence (exemple):
Date début des travaux: 01/02/2018 (donnée saisie une seule fois inchangeable)
Délai : 90 jours (donnée saisie une seule fois inchangeable)
Date limite des travaux: DateLimite$ (cette date est calculable facilement)
Reste : C'est le nombre de jours restants par rapport au délai fixé (ce nombre est calculable et change tous les jours évidemment)
Jusqu'ici tout marche bien, la valeur de la variable RESTE est bien calculée et affichée convenablement.
Mon problème est le suivant: Dans certains cas exceptionnels, les travaux doivent faire l'objet d'une suspension provisoire, c'est ce que les entrepreneurs appellent ODS qui signifie tout simplement ARRET DES TRAVAUX JUSQU'A NOUVEL ORDRE (sur décision des deux parties client et fournisseur). Donc, en plus des données ci-dessus, on peut avoir dans des cas pareils, une (ou plusieurs) date ODS c'est à dire DATE D'ARRET DES TRAVAUX, les travaux reprendront plus tard suite à une nouvelle décision, cette date est appelée DATE DE REPRISE DES TRAVAUX. Le problème c'est que on peut avoir plusieurs ODS... exemple:
Date ODS1 suivie par une date de reprise des travaux REP1
Date ODS2 suivie par une date de reprise des travaux REP2 et ainsi de suite (4 arrêts au maximum)
A mon avis, en cas de date ODS, la valeur du RESTE (nbre de jours restants) sera bloquée et ne changera plus jusqu'à ce que une date de reprise des travaux sera saisie. Là encore je ne sais plus quoi faire, ça me semble, à ce niveau, SUPER Compliqué....
Voici le code qui permet de calculer le RESTE + la date limite (sans ODS bien entendu)
Données réelles :
DebutTrav$="01/05/2018"
Delai=90 jours
Code : Tout sélectionner
Procedure CalculerReste()
Debut=ParseDate("%dd/%mm/%yyyy",debutTrav$)
today=Date()
delai=Val(delai$)
Datemax=AddDate(Debut, #PB_Date_Day, delai)
fin=0
Reste=0
While fin=0
If datemax>today
today=AddDate(today, #PB_Date_Day,1)
Reste=Reste+1
EndIf
If Datemax<=today
fin=1
EndIf
Wend
Datelimite$=FormatDate("%dd/%mm/%yyyy",datemax)
Debug "RESTE : " + Str(reste) + " JOURS")
Debug "Date limite: " + datelimite$)
;Traitement ODS (éventuellement)
....... CODE A PREVOIR ..............
EndProcedure
Merci de votre aide