Triatement d'une date

Bonjour à tous j'aurais voulu faire un traitement de date

par exemple dire que si une date définit est inférieur à 3 mois par rapport à aujourd'hui on met un message "attention"

j'ai essayé de faire ca mais ca marche pas

Dim derniereverif As Variant

Dim prochaineverif As Variant

Dim tempsrestant As Variant

derniereverif = T_derniereverif.Value

prochaineverif = T_prochaineverif.Value

tempsrestant = Date - prochaineverif

If tempsrestant < 3 Then

MsgBox ("Attention")

End If

Merci

Bonsoir b.vincent

Une piste

   If DateDiff("m", Date, tempsrestant) = 3 Then
      MsgBox ("Attention")
   End If

Bonjour,

A tester :

Sub Test()

    Dim LaDate As Date
    Dim Delta As Long

    'LaDate = CDate("01/01/2018")
    LaDate = CDate("20/02/2018")

    Delta = LaDate - Date

    If Delta < 90 Then
        MsgBox "Attention, il reste " & Delta & " jour(s) !"
    Else
        MsgBox "Cool, il reste encore " & Delta & " jour(s) !"
    End If

End Sub

Bonjour,

ça dépend un peu de quel chapeau tu sors T_derniereverif et T_prochaineverif mébon...

En l'absence de fichier moi je vois ça comme ça :

Dim derniereverif&, prochaineverif& '& = As Long
Dim tempsrestant% '% = As Integer
derniereverif = T_derniereverif.Value2
prochaineverif = T_prochaineverif.Value2
tempsrestant = Date - prochaineverif
If tempsrestant < 3 Then
MsgBox ("Attention")
End If

If Iznogood Then fournir Fichier test

A+

voila d'où sort tout ca :=D

dans le sub detail

le problème c'est qu'il ne prends pas en compte

tempsrestant = Date - prochaineverif

Je ne vais pas m'amuser à tester ça serait trop compliqué, mais j'ai compris qu'il s'agit de TextBox

Dans ce cas essaye comme ça :

Dim derniereverif&, prochaineverif&, tempsrestant%
derniereverif = CDate(T_derniereverif)
prochaineverif = CDate(T_prochaineverif)
tempsrestant = Date - prochaineverif

Les puristes vous fermez les yeux hein !

Bon c'est pas brillantissime c'est juste bourré d'autoconversion... Je sais. Mais dis moi ce que ça donne. (étant entendu que je n'ai pas évalué la logique de ton 3 (ligne suivante) : Je ne m'intéresse qu'à l'erreur d'exécution.

Nota : le problème c'est qu'il ne prends pas en compte ça ne veut rien dire ! Pour ce dernier test, il me faudra autre chose comme explication :

Il y a un erreur d'exécution ? Quel message ? Ou pas d'erreur mais une incohérence, laquelle ? et ImprimEcran si nécessaire...

A+

galopin01 a écrit :

Je ne vais pas m'amuser à tester ça serait trop compliqué, mais j'ai compris qu'il s'agit de TextBox

Dans ce cas essaye comme ça :

Dim derniereverif&, prochaineverif&, tempsrestant%
derniereverif = CDate(T_derniereverif)
prochaineverif = CDate(T_prochaineverif)
tempsrestant = Date - prochaineverif

Les puristes vous fermez les yeux hein !

Bon c'est pas brillantissime c'est juste bourré d'autoconversion... Je sais. Mais dis moi ce que ça donne. (étant entendu que je n'ai pas évalué la logique de ton 3 (ligne suivante) : Je ne m'intéresse qu'à l'erreur d'exécution.

Nota : le problème c'est qu'il ne prends pas en compte ça ne veut rien dire ! Pour ce dernier test, il me faudra autre chose comme explication :

Il y a un erreur d'exécution ? Quel message ? Ou pas d'erreur mais une incohérence, laquelle ? et ImprimEcran si nécessaire...

A+

desolé galopin mais je suis débutant donc oui il y a plein d'autoconversion c'est pour m'aider a mieux comprendre

pour l'erreur il me dit:

erreur d'execution '13 ':

incompatibilité de type


je m'etais planté dans l'intitulé et quand on définit un dim quelquechose on le déclare en tant que quoi?

du coup j'ai mis ce code ca fonctionne bien

Dim derniereverif&, prochaineverif&, tempsrestant%

derniereverif = CDate(T_dernierevisite)

prochaineverif = CDate(T_prochainevisite)

tempsrestant = prochaineverif - CDate(Date)

If tempsrestant < 3 Then

MsgBox ("attention")

End If

avec pour T_prochainevisite 15/12/2017

et date 14/11/2017

comment peut on déterminer les valeur pour 1 mois, 2 mois... car la j'ai 31... ca correspond a quoi???

Ben là tu as une différence en jours du 14 Novembre au 15 Décembre, il y a bien 31 jours...

Vu qu'il y a des mois de 30 jours et d'autres de 31, sans compter Février, il est difficile d'évaluer 3 mois avec rigueur si tu passes par une soustraction... A mon avis tu devrais te contenter d'évaluer cet intervalle avec 30, 60 et 90, pour calculer tes échéances ça me semble une précision correcte ?

Pour les déclarations c'est un peu compliqué d'énoncer des généralités, je te revoie pour cela à l'aide de VBA : il suffit de taper Dim puis sur la touche F1 pour avoir de nombreuses explications sur les différents types de variables. Ensuite tu cliqiues sur les différents liens proposés pour les différents type et tu auras déjà un aperçu correcte.

Mais les déclarations efficaces sont aussi un long apprentissage pour l'utilisateur lambda qui comme moi n'a pas fait de grandes études informatiques. Donc des fois on patauge un peu... Dans ce cas on demande sur le forum !

En particulier pour les dates cela est parfois compliqué : Dans beaucoup de cas Dim Date peut convenir... Cependant dans beaucoup de cas également il vaut souvent mieux As Long ou comme j'ai fait avec un & à la fin de ta variable.

Bien sur on ne met le & (qui signifie as Long) que dans le Dim le nom de ta variable lui reste inchangé.

Pour tempsrestant j'ai mis un "%" qui signifie as Integer car c'est une différence de date et de ce cas le nombre est (dans ton cas un nombre fini assez petit)

Dans d'autres cas, si on veut l'âge du capitaine par exemple ou le nombre de jours est beaucoup plus important et ou on compte plutôt en année la technique est un peu différente... Pour ce cas particulier je te renvoie à l'aide de Google sur DATEDIFF qui permet de calculer une différence de date en Années, Mois, Jours. Avec une précision toute relative puisque certains mois n'on pas le même nombre de jours...

A+

a ok je vois déjà plus clair merci galopin01 pour toutes ces expliquations

Rechercher des sujets similaires à "triatement date"