Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1049 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Incrémenter une date plusieurs fois de suite

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Incrémenter une date plusieurs fois de suite

n°1279817
tilolebo
point trop n'en faut
Posté le 09-01-2006 à 19:39:41  profilanswer
 

Bonjour à tous,
 
Je galère quelque peu sous excel au boulot, je m'explique:
 
- Je suis en possession d'un tableau contenant entre autres des dates de début de contrat et la durée de ces contrats en mois.
- Ces contrats sont à reconduction tacite, pour une période égale à celle du précédent contrat
- Je cherche à connaitre la date de fin du contrat en cours. Par ex. dans mon tableau j'ai la date de début de contrat 01/01/2000, le contrat dure 12 mois, je dois donc obtenir cette date de fin du contrat en cours: 01/01/2007 (le contrat a été renouvelé par reconduction tacite 7 fois).
 
J'utilise la fonction MOIS.DECALER(DATE;DUREE) pour incrémenter la date de début de contrat, mais le problème est que l'incrémentation ne se fait qu'une fois. J'aimerai pouvoir coupler cette formule à une autre qui me permettrait de me baser sur la date actuelle, pour pouvoir calculer la fin du contrat en cours. Ca donnerait un truc du genre:
 
While (date_fin_contrat<date_actuelle)
{
date_fin_contrat=MOIS.DECALER(date_debut_contrat,duree);
}
 
Evidemment je n'y connais rien en VB, si quelqu'un pouvait me mettre sur la piste je lui en serais reconnaissant  :jap:


Message édité par tilolebo le 10-01-2006 à 20:15:03
mood
Publicité
Posté le 09-01-2006 à 19:39:41  profilanswer
 

n°1280193
mareek
Et de 3 \o/
Posté le 10-01-2006 à 11:10:44  profilanswer
 

utilise la fonction DateAdd  
http://msdn.microsoft.com/library/ [...] ateadd.asp


---------------
"I wonder if the internal negative pressure in self pumping toothpaste tubes is adjusted for different market altitudes." John Carmack
n°1280674
tilolebo
point trop n'en faut
Posté le 10-01-2006 à 17:08:17  profilanswer
 

Eurêka !
 
Vu que ça me gavait vraiment de faire ça en VB je me suis torturé l'esprit ce matin pour trouver un moyen de faire ça plus simplement, et j'ai trouvé:
 
MOIS.DECALER(date_début_contrat;durée_contrat_en_mois*ARRONDI.SUP(((AUJOURDHUI()-date_début_contrat)/30,4375)/durée_contrat;0))
 
En fait l'idée c'est que je calcule la différence en jours entre la date d'aujourd'hui et la date de début de contrat (je n'ai pas trouvé sous excel le moyen de calculer cet intervalle en mois, ce qui est possible sous VB avec la fonction DateDiff, paramètre DateInterval.Month).
 
Puis je divise ce nombre de jours par 30,4375, qui est en fait le nombre moyen de jours/mois sur une période de 4 ans comprenant une année bissextile (oui je sais je chipote mais bon  :p ). J'obtient donc le nombre de mois entre le début du contrat et la date actuelle. Je divise ensuite le résultat obtenu par la durée du contrat (en mois), ce qui me donne le nombre de contrats signés depuis la date de début de contrat. J'arrondis ensuite par excès (pour comptabiliser le dernier contrat commencé), puis je multiplie par la durée du contrat.
 
J'obtiens ainsi le nombre de mois entre la date de début de contrat et la date de fin de contrat. Je n'ai plus qu'à utiliser ma formule MOIS.DECALER() pour obtenir la date de fin de contrat.


Message édité par tilolebo le 10-01-2006 à 19:12:55
n°1280692
lden
Posté le 10-01-2006 à 17:14:09  profilanswer
 

huumm je pense que tu devrais utiliser la fonction slip
pour recuperer les champ jj mm ou aaaa de tes date.
Apres tu fais un difference entre les valeurs mois renvoye.SLIP te renvoie un tableau de chaine!
iret=SLIP(mydate,....)
mois=iret(1)      'ca te donne le mois tu fais ca deux fois pr tes deux dates...à voir enfin si ton truc marche laisse le comme ca!!!et bon taff

n°1282521
aquamusic
Posté le 12-01-2006 à 21:31:14  profilanswer
 

pour calculer le nombre de mois entre 2 dates de contrats, j'utilise au boulot la fonction directement sur excel :  
=datedif(début_de_contrat;fin_de_contrat;"m" )
 
m pour mois en tenant compte de l'année et ym si tu n'en tiens pas compte

n°1286861
ladislas26​09
Posté le 18-01-2006 à 18:05:58  profilanswer
 

et pour récupérer les composantes d'une date, ya des fonctions embarquées comme day(date), month(date) et year(date)
 
ensuite, je pense que dateadd est le plus approprié et le plus propre mais on peut aussi faire une addition simple de genre
 
datefin = daserial(year(datedébut),month(datedébut)+12*duréeducontrat),day(datedébut)-1).  
comme ça, tu as bien le dernier jour du dernier mois du contrat.
 
on oublira pas de déclarer les variables date (pas comme moi).


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Incrémenter une date plusieurs fois de suite

 

Sujets relatifs
[VB6] Appel iteratif sur plusieurs textbox ??[Java 1.5]Afficher la date et l'heure
[SQL Server] Plusieurs index du même nomCréation de tableaux complexes en LaTeX...sur plusieurs pages!
Texte sur plusieurs colonnes - colonnes 'journalistiques'[PHP QST] envoie de plusieurs fichiers en un seul tour de main
convertir une date vers un entier[Help]Comment ouvrir un jeux 2 fois
Mysql : gros site : une plusieurs base ?Plusieurs skins, feuilles de style et blablabla
Plus de sujets relatifs à : Incrémenter une date plusieurs fois de suite


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR