Compteur For/Next avec des dates et heures

PatBlarg Messages postés 67 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 11 mai 2010 - 3 févr. 2009 à 16:50
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Derniè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.

6 réponses

jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 7
3 févr. 2009 à 17:03
Bonjour,

utilise donc dateadd (à voir dans ton aide en ligne) avec ton step, tout simplement0
0
Supra3000 Messages postés 159 Date d'inscription lundi 18 février 2008 Statut Membre Dernière intervention 8 janvier 2010 2
3 févr. 2009 à 17:06
"Demain : " & DateAdd("d", 1, Date) 

"Dans 17 semaines : " & DateAdd("ww", 17, Date) 
     
"Dans 2 ans : " & DateAdd("yyyy", 2, Date) 
     
"Il y a 183 jours : " & DateAdd("d", -183, Date) 
     
"67 jours après le 16-Mars-2007 : " & DateAdd("d", 67, "16/03/2007")

Bonne continuation
0
PatBlarg Messages postés 67 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 11 mai 2010
3 févr. 2009 à 17:10
Mais comment ça marche dans un compteur!?

For compteur = date1 To date2 Step DateAdd("m", 1, compteur)

J'ai essayé ça, mais ça me donne des résultat bizarre

Le problème avec DateAdd c'est que je dois spécifié la date.
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 7
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 ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
PatBlarg Messages postés 67 Date d'inscription jeudi 26 juin 2008 Statut Membre Dernière intervention 11 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
0
jmf0 Messages postés 1566 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 5 avril 2013 7
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
0