Clad49
Messages postés265Date d'inscriptiondimanche 3 août 2003StatutMembreDernière intervention29 mars 2010
-
13 juin 2006 à 15:07
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 2019
-
13 juin 2006 à 22:12
Bonjour !
Voila j'ai un tableau comme ceci :
Private Type Tableau
tDates As String
End Type
Private t(10) As Tableau
'----------------------------------------
Private Sub Form_Load()
t(0).tDates = "11/06"
t(1).tDates = "23/01"
t(2).tDates = "14/11"
t(3).tDates = "25/12"
t(4).tDates = "13/04"
t(5).tDates = "16/10"
t(6).tDates = "26/06"
t(7).tDates = "06/03"
t(8).tDates = "26/09"
t(9).tDates = "18/09"
t(10).tDates = "16/07"
End Sub
Dans toute ces dates j'aimerai ne garder que les dates antérieur à la dates d'aujourd'huit, donc je fait :
For i = 0 To 10
If DateDiff("d", Date, t(i).tDates) < DateDiff("d", Date, Date) Then
Text1 = Text1 & " " & t(i).tDates
End If
Next i
Il me retourne donc toutes les dates antérieur a la date d'aujourd'huit :
11/06 23/01 13/04 06/03
Et j'aimerai ne garder dans ces dates les trois dates les plus proche de la date d'aujourd'huit !
Dolphin Boy
Messages postés630Date d'inscriptionvendredi 5 mai 2006StatutMembreDernière intervention17 février 2007 13 juin 2006 à 15:31
Salut,
D'abord, plutôt que :
If DateDiff("d", Date, t(i).tDates) < DateDiff("d", Date, Date) Then ...
j'aurais codé :
If DateDiff("d", Date, t(i).tDates) < 0 Then ...
Ensuite, au lieu d'utiliser directement ta textbox pour stocker le résultat, pourquoi pas d'abord un tableau que tu trieras en inverse, ensuite tu ne prends que les 3 1ères valeurs de ce tableau pour les afficher.
bpermute = True 'Il faut au moins parcourir une fois
Do While bpermute = True 'On tourne tant que l'on bouge des valeurs
bpermute = False 'Si on est ici c qu'il faut réinitialiser bpermute
For t = 1 To imax - 1 'On tourne autant de fois qu'il y a de fiches
'(-1 vu qu'on compare 2 valeurs)
If ligne(t) < ligne(t + 1) Then 'Si on a trouvé deux valeurs mal rangées
'(autrement dit une valeur qui se
'trouve plus bas dans le tableau mais qui
'est plus levée...
cprovisoire = ligne(t) 'On inverse les deux chaines
ligne(t) = ligne(t + 1) 'bis
ligne(t + 1) = cprovisoire 'bis
bpermute = True
End If
Next
Loop
'Affichage du résultat classé
For i = 1 To imax
liste = liste & ligne(i) &vbCrLf
If i = imax Then MsgBox "liste complète triée" &vbCrLf& liste &vbCrLf&vbCrL&_
"les 3 plus grands" & vbCrLf& ligne(i-15) &vbCrLf& ligne(i-14) &vbCrLf& ligne(i-13)
Next
Dolphin Boy
Messages postés630Date d'inscriptionvendredi 5 mai 2006StatutMembreDernière intervention17 février 2007 13 juin 2006 à 19:52
Ben oui, il y a un autre moyen :
- Ranger tes valeurs dans une table de base de données (à moins qu'elles y soient déjà ?)
- Ouvrir un Recordset avec la requête SQL suivante qui te remonte ce que tu veux :
"SELECT TOP 3 TesDates FROM TaTable WHERE TesDates < #" & Date & "# ORDER BY TesDates DESC"
Vous n’avez pas trouvé la réponse que vous recherchez ?