PatBlarg
Messages postés67Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention11 mai 2010
-
3 févr. 2009 à 16:50
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 2013
-
3 févr. 2009 à 20:08
Bonjour, pour créer un tableau avec un intervalle de temps définie par l'utilisateur, j'ai utilisé un compteur avec des dates, et le "step" en heures. J'ai été surpris de voir que ça fonctionne!
Donc je peux écrire une date par ligne à un intervalle de temps qui monte selon le nombre de temps spécifié :
Dim date1 As Date
Dim date2 As Date
date1 = "2008-10-01"
date2 = "2008-10-02"
Dim ligne As Integer
ligne = 9
For compteur = date1 To date2 Step "00:1:30"
Worksheets(3).Cells(ligne, 1).Value = Format(compteur, "yyyy-dd-mm hh:MM:ss")
ligne = ligne + 1
Next
Dans ce cas, du 10 octobre 2008 à 00:00:00 jusqu'au 2008-10-02 00:00:00 par coup de 1 minutes 30 secondes.
Par contre, j'aurais besoin aussi de pouvoir le faire par exemple à intervalle de 2 jours (par exemple, du 1er jour du mois jusqu'au dernier à coup de 2 jours) où même 1 mois.(pour un intervalle de 2008 à 2009 par exemple).
Est-ce que c'est possible? Je vois pas trop comment pour l'instant.
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 3 févr. 2009 à 19:11
La date, me semble-t-il, est la date date1, non ? (ou alors on a mal compris) !!!
Ton 1, par contre, c'est précisément la valeur de ton compteur, non ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
PatBlarg
Messages postés67Date d'inscriptionjeudi 26 juin 2008StatutMembreDernière intervention11 mai 2010 3 févr. 2009 à 20:03
Je comprend pas trop la question.
"Date1" est la date de départ, par exemple 2007-01-01
"Date2" est la date de fin, par exemple 2008-01-01
Je veux comme "step" 3 mois par exemple (c'est variable)
Le résultat :
2007-01-01 (Date1)
2007-04-01
2007-07-01
2007-10-01
2008-01-01 (Date2)
Si je fais :
For compteur = Date1 To Date2 Step DateAdd("m", 3, Date1)"
Worksheets(3).Cells(Ligne, 1).Value = Format(compteur, "yyyy-mm-dd hh:MM:ss")
Ligne = Ligne + 1
Next
j'obtiens seulement comme résultat :
2007-01-01
rien d'autre.
J'ai essayé de mettre "0" au lieu de Date1 dans le DateADD, et c'est PRESQUE ça. Sauf que ca ajoute 31 jours tout le temps, peu importe si le mois en compte 30, ou 28. En mettant "Compteur" a la place, j'obtient a peu près le même résultat :
<col style=\"width: 153pt;\" width=\"204\" />----
2006-10-01
00:00:00, ----
2006-11-01 00:00:00, ----
2006-12-02 00:00:00, ----
2007-01-02 00:00:00, ----
2007-02-02 00:00:00, ----
2007-03-05 00:00:00, ----
2007-04-05 00:00:00, ----
2007-05-06 00:00:00, ----
2007-06-06 00:00:00
Je crois que je vais oublié cette facon, et y aller en calculant le nombre de mois de différences et en ajouter un mois a chaque fois à ma date antérieure de façon à obtenir le nombre d'inscriptions désiré. Plus long, mais ca devrait marcher
jmf0
Messages postés1566Date d'inscriptionmardi 26 décembre 2000StatutMembreDernière intervention 5 avril 20138 3 févr. 2009 à 20:08
Bon...
trève de rigolade et faisons bien les choses.
Ce petit exemple devrait t'éclairer (j'espère) :
Private Sub Command1_Click()
MsgBox "de jour en jour"
avance "d", "01/01/2009", "10/01/2009" 'on avance d'un jour entre les 2 dates
MsgBox "de semaine en semaine"
avance "ww", "01/01/2009", "30/01/2009" 'on avance d'une semaine entre les 2 dates
MsgBox "de mois en mois"
avance "m", "01/01/2009", "30/04/2009" 'on avance d'une semaine entre les 2 dates
End Sub
Private Sub avance(pas As String, date1 As Date, date2 As Date)
For i = 0 To DateDiff(pas, date1, date2)
MsgBox DateAdd(pas, i, date1)
Next
End Sub