>> Technologie Électronique >  >> Maison intelligente >> Vie connectée

Comparaison de dates en VBA

Comparer des dates dans Microsoft Visual Basic for Applications (VBA) ne diffère pas de la comparaison d'autres types de données. Les valeurs comparées doivent être de type « Date ». Vous pouvez utiliser les opérateurs standards : « < » (inférieur), « <= » (inférieur ou égal), « > » (supérieur), « >= » (supérieur ou égal), « = » (égal), « <> » (différent). Vous pouvez aussi utiliser « Is » et « IsNot ».

Type Date en VBA

Il est utile de savoir comment VBA stocke les dates en mémoire pour les comparer. Une date est stockée comme un nombre à virgule flottante double précision (Double). La partie entière représente le nombre de jours (positif ou négatif) depuis le 30 décembre 1899. La partie décimale représente le temps écoulé depuis minuit. Une date sans heure a sa partie décimale à zéro. Exemple : 1er mai 1967 est stocké comme 24593,0. Ainsi, quand VBA compare deux dates, il compare en fait deux nombres représentant des jours.

Chaîne de caractères vs Date

En comparant des dates en VBA, assurez-vous que les valeurs sont de type « Date » et non des chaînes de caractères. Exemple : la chaîne « 05/01/1999 » est inférieure à « 31/12/1900 » car « 05 » précède « 31 » lexicographiquement. Convertissez une chaîne en date avec la fonction « CDate », ex : « CDate(TextBox.Value) ».

Fonctions utiles

Outre CDate(), d'autres fonctions aident pour les comparaisons de dates. « Date() » renvoie la date du jour comme valeur Date. « Now() » renvoie date et heure actuelles comme valeur Date. Comme le type Date inclut l'heure, vous pouvez extraire seulement la partie date d'une variable pour la comparer avec « DateValue() », ex : « If soumission > DateValue(échéance) Then ... »

Arithmétique de dates

Comme une date est stockée comme nombre de jours depuis le 30/12/1899, vous pouvez inclure de l'arithmétique de dates dans les comparaisons. Exemple : un billet expire 3 jours après achat. Vérifiez l'expiration avec du code VBA similaire à :

Public Function expiré(achat As Date) As Boolean
    expiré = False
    If achat + 3 > Date() Then expiré = True
End Function
Vie connectée