Liste de dates

Bonsoir,

Sur une liste de dates, je souhaite savoir si je suis en présence d’éléments journaliers, mensuels, annuels…

Une idée :?:

Bonjour,

La question n’est pas claire. Tu peux préciser un peu ?

Oui, je suis perplexe aussi.
S’il s’agit de périodes, une série de dates à elle seule ne suffit pas, il faut une seconde série, synchro :

  • périodicité (jour, mois, etc.) dont on déduit la date de fin
  • date de fin dont on déduit la périodicité
    La périodicité c’est bien pour créer des données, la date de fin c’est bien dans les données créées…

Si c’est une vrai liste, celle-ci possède une référence pour chacun de ses elements, tu peux donc la construire de tel sorte que la référence contienne l’information.

ex:
journaliers : reference à 3 chiffres
mensuels :refrence à 4 chiffres
etc…

Je me suis déjà servi de cette technique pour encoder des infos dans la ref. ça marche plutôt bien.
Même dans une énumération.

Alors je m’explique :

Dossier A :
01/01/2019
01/02/2019
01/03/2019

Dossier B :
01/01/2017
01/02/2018
01/03/2019

Etc

Savoir que le dossier A à une périodicité mensuelle, et le B annuelle

Je ferais la différence de dates après tri, alors :
A ~30 jours = mensuel
B ~365 = annuel
ou je rate un truc ?

Oui je prends :wink:

Je vais tester

Penser à Ajouter à date aussi :
<code 4D>
Au cas ou
: (date2=(date1+1)) //quotidien
: (date2=(date1+7)) //hebdomadaire
: (date2=Ajouter à date(date1;0;1;0)) //mensuel
: (date2=Ajouter à date(date1;1;0;0)) //annuel
Fin de cas
</code 4D>
À vérifier sur une séquence bien sûr. C’est déclinable à l’infini, trimestre, semestre, etc…

NB : Le dossier B se voulait annuel je suppose mais il y a 13 mois entre chaque date. C’est pas commun comme fréquence :wink:

: Stanislas CARON

NB : Le dossier B se voulait annuel je suppose mais il y a 13 mois
entre chaque date. C’est pas commun comme fréquence :wink:
Si, si, dans les fiches de paie, c’est banal :mrgreen:

ça avance :wink:

comment puis je faire pour savoir dans ma date de fin si le mois est à 31 ou 30 voir 28 jours
<code 4D>
$DateDebut:=“01/”+Chaîne(Mois de($date))+"/"+Chaîne(Année de($date))
$DateFin:=“31/”+Chaîne(Mois de($date))+"/"+Chaîne(Année de($date))
</code 4D>

facile,

mois suivant - 1 jour :wink:
dont pour février, tu calcules la date du 1er mars auquel tu enlèves 1 jour.

Patrick

<code 4D>
$DateFin:=Ajouter a date($DateDebut;0;1;-1)

</code 4D>

ah oui tout simple :!: merci :wink:

: Matthieu LAMPERIERE

<code 4D>
$DateDebut:=“01/”+Chaîne(Mois de($date))+"/"+Chaîne(Année de($date))
</code 4D>
Par contre, il vaut mieux éviter de travailler les dates par des chaînes de cette façon. Ça ne fonctionnera pas sur un système dont le format de date est différent de DD//MM/YYYY.

Il vaut mieux toujours travailler avec des dates et les commandes qui les gèrent. Ça donne en l’occurrence :
<code 4D>
$DateDebut:=Ajouter à date(!00/00/0000!;Année de($date);Mois de($date);1)
</code 4D>

Si, comme je l’ai compris, il s’agit, à partir de dates existantes, de retrouver la périodicité qui a permis de les obtenir, je ne m’embêterais pas à refaire les calculs. Il suffit de faire des tranches approximatives, en gros :
<code 4D>
$diff:=dateFin-dateDebut
au cas ou
:($diff=1)
//quotidien
:($diff=7)
//hebdo
:($diff>27)&(diff<32)
//mensuel
:($diff>80)&(diff<100)
//trimestriel
:($diff>360)&(diff<400)
//annuel
Fin de cas
</code 4D>

Merci :pray: