Probleme de fin de date [Résolu]

Signaler
Messages postés
45
Date d'inscription
mercredi 5 mars 2008
Statut
Membre
Dernière intervention
23 juin 2008
-
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
-
bonjour, a tous,
voila je vous explique je dois concevoir un programme en vb qui aura une durée limiter dans le temps (limiter a un ans) par rapport a une date que je lui exprime (    Dim date_debut New System.DateTime(2008, 6, 2) et une date de fin (Dim date_fin New System.DateTime(2009, 6, 1) le probleme que je pose n'est pas la fermeture du programme arrivé a ce jour la c'est de  pouvoir effectuer 1 mois avant la date d'expiration du programme une messagebox qui s'affichera tout les jours jusqu'a la date de fin en précisant le nombre de jour restant ( ex: il ne vout reste plus que X jour pour pouvoir effectuer les mises a jour) voila aidez moi s'il vous plait cela fait environ trois a quatre jour que je suis dans la panique et que je galère merci!!

9 réponses

Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
8
Salut,

Voici un petit exemple qui pourra t'aider :

Dim date_fin
As
Date =
CType(
"01/06/2009",
Date)

' On définit la date de fin seulement la date avec System.DateTime, tu définis la date et l'heure

       
Dim date_test
As Date =
CType(
My.Computer.Clock.LocalTime.ToShortDateString,
Date)
       
' On récupère la date actuelle sur le PC

       
If DateDiff(DateInterval.Month, date_test, date_fin) <= 1
Then
           
' On compare les dates & DateDiff nous retourne la différence en mois
            ' Si le nombre de mois <= 1 mois, on affiche un message
            MsgBox(
"Il Reste " + DateDiff(DateInterval.Day, date_test, date_fin).ToString +
" jours")
           
' Affichage d'un message avec DateDiff pour récupérer la différence entre les deux dates
            ' en jours
       
End If

++

<hr size="2" width="100%" />Si la réponse vous convient : Réponse Acceptée
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
8
Salut,

Dim date_fin = New System.DateTime(2009, 6, 1)
Dim Span As TimeSpan = Now - date_fin
If Span.TotalDays < 30 then
    MsgBox("Il vous reste " & Span.TotalDays & " jours")
End If
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
8
impecable sa marche mais comment faut il que je fasse pour que le
Span.TotalDays soit en chiffre arrondi car pour l'instant il me donne
plein de chiffre aprés la virgule

Tu en fais un nombre entier: CInt(Span.TotalDays)
Ou alors pour prendre l'entier au dessus: Math.Ceiling(Span.TotalDays)
Entier en dessous: Math.Floor(Span.TotalDays), ce qui est équivalent à Span.Days
et aussi comment fait je si je veut aussi afficher le temps qu'il me reste avec le nombre d'heure et de minute ?
Regarde les propriétés du TimeSpan... Pour afficher les jours, heures et minutes:
MsgBox("Il reste " & Span.Days & " jours " & Span.Hours & " heures et " & Span.Minutes & " minutes")
La différence avec le "Total" (TotalHours <> Hours) :
Si Days=2Hours=3Minutes=30 : TotalDays (2) + (3/24) + (30/60/24) 2.14583333333...

TotalHours (2*24) + (3) + (30/60) 51.5TotalMinutes (2*24*60) + (3*60) + (30) 3'090
en tout cas je dois pâs avoir la dernière version du framework car j'ai du utilisé
Dim Span As TimeSpan = Now.Subtract(date_fin)
au lieu de
Dim Span As TimeSpan = Now - date_fin
En regardant de plus près l'erreur signalé par fauve (L'opérateur '-' n'est pas défini pour les types 'Date' et 'Object'), j'ai vu que j'avais oublié de déclarer ma variable date_fin:
Dim date_fin As DateTime = New System.DateTime(2009, 6, 1)
ou plus court:
Dim date_fin As New System.DateTime(2009, 6, 1)

Mais pour être sûr que c'était bien le problème, j'ai testé le code sans la déclaration: ça fonctionne quand même! Etrange... (sur la version 3.5 aussi)
Mais essais en déclarant date_fin As DateTime pour voir si ça fonctionne...
a au fait est ce que vous s'avez par hasard ou pourais je trouvé de la dock tres bien élaboré pour travailler en vb?
Non pas de site particulier, tout dépend de ce que tu veux apprendre. Pour apprendre la syntaxe et des techniques de codage, rien de mieux que des exemples. Une fois que t'es dans ta prog, perso je commence presque toujours par MSDN si il me faut des détails sur une classe. Si ça ne me suffit pas, Google...
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
8
En fait, il faut faire Dim Span As TimeSpan = date_fin - Now pas Dim Span As TimeSpan = Now - date_fin

Et pour la déclaration oublié, c'est parce que j'ai fais un copier-coller de ton code
par rapport a une date que je lui exprime (    Dim date_debut = New
System.DateTime(2008, 6, 2) et une date de fin (Dim date_fin = New
System.DateTime(2009, 6, 1)

fauve> Pourquoi convertir la date en String pour la reconvertir en Date?
Dim date_test
As Date =
CType(
My.Computer.Clock.LocalTime.ToShortDateString,
Date)

Dim date_fin
AsDate =
CType(
"01/06/2009",
Date)
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Salut,

utilise la fonction DateDiff

@++

le mystérieux chevalier,"Provençal, le gaulois"
Forum Office & VBA
Messages postés
661
Date d'inscription
vendredi 2 décembre 2005
Statut
Membre
Dernière intervention
23 mars 2011
8
Salut Kevin.Ory,

Il y a une erreur lors de la déclaration de la variable Span :

Erreur    1    L'opérateur '-' n'est pas défini pour les types 'Date' et 'Object'

++
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
8
Hum, c'est parce que tu n'utilise pas la dernière version du framework....

Pour les versions précédentes, faire comme ceci:

Dim Span As TimeSpan = Now.Subtract(date_fin)
Messages postés
45
Date d'inscription
mercredi 5 mars 2008
Statut
Membre
Dernière intervention
23 juin 2008

je verifie et je t'en reparles

en tout cas merci  a vous de me répondre c'est trop cool
Messages postés
45
Date d'inscription
mercredi 5 mars 2008
Statut
Membre
Dernière intervention
23 juin 2008

impecable sa marche mais comment faut il que je fasse pour que le Span.TotalDays soit en chiffre arrondi car pour l'instant il me donne plein de chiffre aprés la virgule.

et aussi comment fait je si je veut aussi afficher le temps qu'il me reste avec le nombre d'heure et de minute ?

en tout cas je dois pâs avoir la dernière version du framework car j'ai du utilisé

Dim Span As TimeSpan = Now.Subtract(date_fin)

 au lieu de

Dim Span As TimeSpan = Now - date_fin

c'est quoi ton framework pourtant  il me semble que j'ai le framework 3.5 sur mon visual studio

a au fait est ce que vous s'avez par hasard ou pourais je trouvé de la dock tres bien élaboré pour travailler en vb?

merci a tous et bonne soirée