Comparaison de dates en VBA

page de calendrier

VBA stocke une date sous forme de nombre de jours depuis le 30 décembre 1899.

Crédit d'image : Sergii Gnatiuk/iStock/Getty Images

La comparaison de dates dans Microsoft Visual Basic pour Applications n'est pas différente de la comparaison de tout autre type de données. Les valeurs que vous comparez doivent être de type "Date". Vous pouvez utiliser les opérateurs de comparaison standard: "" pour "supérieur à"; ">=" pour "supérieur ou égal à"; "=" pour "égal à"; et "<>" pour "pas égal à". Vous pouvez également utiliser deux opérateurs de comparaison, "Is" et "IsNot".

Type de date VBA

Il est utile de se rappeler comment VBA stocke les valeurs de date en mémoire lorsque vous comparez des dates. Une date est stockée sous la forme d'un nombre à virgule flottante double précision, ou d'un Double. La partie entière longue est le nombre de jours, positifs ou négatifs, depuis le 30 décembre 1899. La partie décimale est le temps qui s'est écoulé depuis minuit. Une date sans heure a sa partie décimale mise à zéro. Par exemple, le 1er mai 1967 est stocké sous le nom 24593.0. Cela signifie que lorsque VBA compare deux dates, il compare en fait deux nombres qui représentent des jours.

Vidéo du jour

Chaîne de caractères vs. Date

Lorsque vous comparez des dates en VBA, vous devez vous assurer que les valeurs que vous comparez ont un type "Date" et ne sont pas des chaînes de caractères. Par exemple, la chaîne de caractères "01/01/1999" est inférieure à la chaîne de caractères "31/12/1900" car "05" vient avant "12". Convertissez une chaîne de caractères en type date à l'aide de la fonction "CDate", par exemple, "CDate (Zone de texte. Valeur)".

Fonctions utiles

En plus de CDate(), il existe d'autres fonctions utiles que vous pouvez utiliser pour comparer des dates. La fonction "Date()" fournit la date du jour en tant que valeur Date. La fonction "Now()" fournit la date et l'heure du jour en tant que valeur Date. Étant donné que le type de données Date inclut également un composant d'heure, vous ne pouvez extraire que la partie date d'une variable lors de la comparaison de dates à l'aide de la fonction "DateValue()", par exemple, "Si soumission > DateValue (date limite) Then ..."

Arithmétique des dates

Étant donné qu'une date est stockée sous forme de nombre de jours depuis le 30 décembre 1899, vous pouvez inclure l'arithmétique des dates lors de la comparaison des dates dans VBA. Par exemple, si un ticket expire trois jours après son achat, vous pouvez rechercher un ticket expiré avec un code VBA similaire au suivant :

Fonction publique expirée (achat en tant que date) As Boolean expiré = False Si achat+3 > Date() Puis expiré = True End If End Function