Vérificateur de dates

Signaler
Messages postés
16
Date d'inscription
mardi 27 juillet 2010
Statut
Membre
Dernière intervention
20 avril 2011
-
Messages postés
16
Date d'inscription
mardi 27 juillet 2010
Statut
Membre
Dernière intervention
20 avril 2011
-
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

Messages postés
58
Date d'inscription
samedi 4 mars 2006
Statut
Membre
Dernière intervention
3 janvier 2015
1
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++
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
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
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
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
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Bonsoir
Ce n'est pas plutot DateDiff("yyyy",...
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
50
Non c'est bon c'est bien DateDiff("y",...
Messages postés
16
Date d'inscription
mardi 27 juillet 2010
Statut
Membre
Dernière intervention
20 avril 2011

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
Messages postés
1263
Date d'inscription
mardi 11 novembre 2003
Statut
Membre
Dernière intervention
24 juillet 2013
6
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
Messages postés
16
Date d'inscription
mardi 27 juillet 2010
Statut
Membre
Dernière intervention
20 avril 2011

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.