Comparaison des dates en VBA
Détermination du type
Il n'est pas nécessaire de convertir les dates dans le type de données "Date" pour effectuer des comparaisons si elles sont déjà dans ce type. Vous pouvez savoir si une variable est "Date" en utilisant plusieurs méthodes. Consultez la section Déclarations au début d'une procédure VBA. Cette section est la partie où vous déclarez toutes les variables en utilisant le mot-clé "Dim". Vos variables de date seront déclarées avec des instructions telles que: "Dim d1 as Date". Une autre façon de savoir si votre variable est du type "Date" consiste à vérifier les assignations effectuées à cette variable. Ces assignations utiliseront le caractère "#", qui indique un type "Date". Par exemple, l'instruction suivante affecte la date "12/1/2001" à la variable "D1" qui est "Date".
D1 = # 12/1/2001 #
Comment convertir le type de données "Date"
Pour comparer les dates dans VBA, vous devez d’abord avoir deux dates stockées dans "Date", qui est l’un des types de valeurs différents dans VBA. Le type "Date" est une instance spéciale du type de données complet. La comparaison de dates est donc essentiellement identique à la comparaison d'entiers. Si vos dates ne sont pas encore dans "Date", vous devrez les convertir. Vous pouvez le faire en utilisant la fonction CDate. Par exemple, exécutez l'instruction suivante pour convertir la chaîne "12/1/2001" en un type "Date":
D1 = CDate ("01/12/2001")
La comparaison
Si vous souhaitez vérifier si la date dans une variable "Date" apparaît avant une autre, utilisez le symbole "inférieur à", comme indiqué dans l'exemple suivant:
Si (d1 <d2)
Utilisez le symbole "supérieur à" pour vérifier si une date est postérieure à une autre et utilisez le symbole "égal" pour savoir si les valeurs des deux variables se rapportent à la même date.
Exemple de programme
Ecrivez un exemple de programme qui convertit et compare les dates afin de pouvoir vous référer à ce code lors de l'écriture de programmes VBA plus complexes pour effectuer cette procédure. Ouvrez l'environnement de programmation dans l'une des applications Office en cliquant sur le bouton "Visual Basic" dans l'onglet "Développeur". Collez ensuite le programme suivant dans la fenêtre centrale de l’environnement. Il utilise la fonction "CDate" pour convertir les chaînes en dates et effectue trois comparaisons différentes entre deux d'entre elles. Exécutez le programme en appuyant sur "F5" et observez la sortie en consultant la fenêtre "Immédiate".
Public Sub CompareDates () Dim d1, d2 As Date d1 = CDate ("12/1/2001") d2 = CDate ("12/1/2002") Si (d1 d2) alors Debug.Print "la date 1 est postérieure à date 2. " Si (d1 = d2), alors Debug.Print "La date 1 est identique à la date 2." End Sub