Vérificateur de dates

thomassc Messages postés 16 Date d'inscription mardi 27 juillet 2010 Statut Membre Dernière intervention 20 avril 2011 - 26 août 2010 à 17:37
thomassc Messages postés 16 Date d'inscription mardi 27 juillet 2010 Statut Membre Dernière intervention 20 avril 2011 - 3 sept. 2010 à 14:13
Bonjour,
Voilà, dans mon lorsque que test une des entrées de ma listbox, il ne renvoi pas le resulta correct. pouvez-vous m'éclairer ?

Private Sub Form_Load()
List1.AddItem "20/08/2010"
List1.AddItem "15/09/2010"
List1.AddItem "30/10/2010"
End Sub

Private Sub List1_Click()
' couleur
Rouge = &H3333FF
Vert = &H66FF66

' test si la date indiqué et < ou = à la date du jour
For i = 0 To List1.ListCount - 1
 If List1.List(i) <= Date Then
  Label2.BackColor Rouge: Label2.Caption "Alarme !"
 Else
  Label2.BackColor Vert: Label2.Caption "En cours"
 End If
Next i
End Sub

8 réponses

cs_Trim Messages postés 60 Date d'inscription samedi 4 mars 2006 Statut Membre Dernière intervention 4 septembre 2023 3
26 août 2010 à 19:23
Salut,

tout d'abord, ta boucle for ... next ne sert absolument à rien car dans tout les cas la valeur de label2.caption est écrasé à chaque incrémentation de i. (son résultat dépend uniquement de List1.List(List1.ListCount - 1))

Ensuite tu peut considérer List1.List(i) et Date comme des strings. Donc regarder si l'un est plus petit que l'autre na aucun sens. Soit tu compare deux valeurs (cad jour1/jour2 mois1/mois2 année1/année2) soit tu utilise la fonction DateDiff().

Tchao++
0
Profil bloqué
26 août 2010 à 21:30
Salut thomassc

Private Sub Form_Load()

    List1.AddItem "20/08/2010"
    List1.AddItem "15/09/2010"
    List1.AddItem "30/10/2010"

End Sub

Private Sub List1_Click()

' test si la date indiqué et < ou = à la date du jour
    If DateDiff("y", Date, List1.List(List1.ListIndex)) > 0 Then
        Label2.BackColor vbRed: Label2.Caption "Alarme !"
    Else
        Label2.BackColor vbGreen: Label2.Caption "En cours"
    End If
    
End Sub

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
Profil bloqué
26 août 2010 à 21:39
Autre chose : tu n'as pas posté dans la bonne catégorie
Ton code est du VB 6.0 et non du VB Net

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
26 août 2010 à 21:46
Bonsoir
Ce n'est pas plutot DateDiff("yyyy",...
0

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

Posez votre question
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
26 août 2010 à 21:55
Non c'est bon c'est bien DateDiff("y",...
0
thomassc Messages postés 16 Date d'inscription mardi 27 juillet 2010 Statut Membre Dernière intervention 20 avril 2011
27 août 2010 à 11:28
Merci beaucoup, les dates correspondent si je met "< 0" à la place de "> 0". Par contre si je rajoute un label en face de chaque date avec la même condition (en affectant "list1.list(0)" à label2 ou (1) pour label3 par exemple) et que je supprime une ligne avec un "list1.removeitem (list1.listindex)" cacher derrière un bouton il me renvoie vers le debugger pour la ligne concernée. Désolè pour de vous soliciter pour quelque chose qui paraît simple, mais je vois enfin la lumière au bout du tunnel...
private sub supprimer_click()
list1.removeitem (list1.listindex)
call tester
end sub

Public sub tester()
   If DateDiff("y", Date, List1.List(0)) < 0 Then
        Label2.BackColor vbRed: Label2.Caption "Alarme !"
    Else
        Label2.BackColor vbGreen: Label2.Caption "En cours"
    End If
    If DateDiff("y", Date, List1.List(1)) < 0 Then
        Label3.BackColor vbRed: Label3.Caption "Alarme !"
    Else
        Label3.BackColor vbGreen: Label3.Caption "En cours"
    End If
    If DateDiff("y", Date, List1.List(2)) < 0 Then
        Label4.BackColor vbRed: Label4.Caption "Alarme !"
    Else
        Label4.BackColor vbGreen: Label4.Caption "En cours"
    End If
end sub
0
Profil bloqué
27 août 2010 à 18:22
Salut thomassc

Utilise une MSHFlexgrid avec 2 colonnes ( la première colonne contient la date et la seconde colonne contient l'état "Alarme" ou "En cours"
Ensuite pour chaque ligne tu fais un Datediff et tu affiches en 2° colonne l'état
tu peux même colorier la ligne selon l'état

Ainsi si tu supprimes une ligne il n'y aura aucun problème

La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.

GRENIER Alain
0
thomassc Messages postés 16 Date d'inscription mardi 27 juillet 2010 Statut Membre Dernière intervention 20 avril 2011
3 sept. 2010 à 14:13
Merci de vos réponse.

En fait, j'utilise un fichier ".txt" pour remplir ma listbox et donc quand je supprimer une ligne je mets à jour le fichier. Pour la partie teste des statuts j'ai inclus un "on error goto..." dans mon "public sub tester" et dans ma sortie (en cas d'erreur) :

- j'efface la liste
- je recharge le fichier à nouveau
- je vérifie à nouveau les statut comme si je venais d'ouvrir l'application.

C'est un peu lourd et il y a surement plus simple mais cela m'a évité de modifier trop mon code avec un autre contrôl. Et ça marche bien..



++ Et merci encore.
0
Rejoignez-nous