Génerer Tranche de temps entre deux dates avec informations complémentaires.
waazza
Messages postés2Date d'inscriptiondimanche 25 juillet 2004StatutMembreDernière intervention18 février 2006
-
17 févr. 2006 à 23:58
cs_schtroumf
Messages postés59Date d'inscriptionmercredi 8 octobre 2003StatutMembreDernière intervention22 juillet 2008
-
20 févr. 2006 à 03:18
Bonjour à tous !
Je suis confronté à un sérieux problème étant donné mes petites connaissances en VB. Je m'explique. Je souhaite réalisé une application VB de la facon suivante.
L'utilisateur rentre une date de début et une date de fin. Dans mon exemple, date début 01/01/2005 et date de fin 31/12/2005. Ce que je souhaite c'est qu'à partir de ces dates des tranches de temps se genérent avec toujours le 28 pour solder chaque mois.
J'ai essayé de partir avec un do while loop mais non concluant.
En gros, on part de la date de début de prestation et tant que l'on ne dépasse pas la date de fin de prestation on crée des tranches de temps jusqu'au 28.
La 2ème subtilité consiste à indiquer en fonction du mois si c'est une période hiver ( Novembre, Décembre, Janvier, Février, Mars) ou une période été ( les autres mois ). Merci d'avance pour les conseils !!
A voir également:
Génerer Tranche de temps entre deux dates avec informations complémentaires.
cs_schtroumf
Messages postés59Date d'inscriptionmercredi 8 octobre 2003StatutMembreDernière intervention22 juillet 2008 20 févr. 2006 à 03:18
Bon, là je crois que j'ai bien compris le problème (dum moins j'espère) vu que ça donne les mêmes résultats que le code de pcpt
J'ai tout de même ajouter quelques trucs comme la gestion d'une date de début dont le jour est le 28, 29, 30 ou 31 et la gestion d'un intervalle inférieur à 1 mois (exemple 29/01/2005 au 10/02/2006)
Dim datedeb As Date
Dim datefin As Date
Dim date_28 As Date
Dim msg As String
datedeb = "01/01/2006" ' date de départ
datefin = "31/12/2006" ' date de fin
msg = ""
If (datedeb > datefin) Then
MsgBox "période invalide"
End
End If
If ((Format(datedeb, "d") < 28) Or (DateAdd("m", 1, datedeb) < datefin)) Then
If (Format(datedeb, "d") < 28) Then 'le jour de la date de début est < à 28
date2 = "28/" & Format(datedeb, "mm") & "/" & Format(datedeb, "yyyy")
Else 'le jour de la date de début est > ou= à 28
date2 = DateAdd("m", 1, datedeb)
date2 = "28/" & Format(date2, "mm") & "/" & Format(date2, "yyyy")
End If msg msg & datedeb & "> " & date2 & vbCrLf
While (date2 < datefin)
date_28 = DateAdd("m", 1, date2) 'on ajoute 1 mois
If (date_28 < datefin) Then 'on n'est pas à la fin msg msg & date2 & "> " & date_28 & vbCrLf 'on stocke l'intervalle trouvé
Else 'on a traité tout l'intervalle msg msg & date2 & "> " & datefin & vbCrLf 'on stocke l'intervalle trouvé
End If
date2 = date_28
Wend