Cours VBA : les conditions (partie 2)

Fonction IsNumeric

La fonction IsNumeric (vue à la page précédente) renvoie True (vrai) si la valeur est numérique et False (faux) si ce n'est pas le cas :

If IsNumeric(Range("A1")) = True Then
If IsNumeric(Range("A1")) Then

Ces 2 lignes sont identiques (il n'est pas nécessaire d'entrer = True puisque que l'on cherche de toute manière à savoir si l'expression est vraie).


Dans le cas où nous voulons vérifier si la valeur n'est pas numérique, nous avons également deux possibilités :

If IsNumeric(Range("A1")) = False Then 'Si la valeur n'est pas numérique
If Not IsNumeric(Range("A1")) Then 'Si la valeur n'est pas numérique

Il existe de nombreuses autres fonctions que vous pouvez utiliser dans vos conditions (ou plus généralement dans vos codes VBA).

Vous pourrez retrouver la liste des principales fonctions VBA sur la page Fonctions VBA du site.

Fonctions de dates

Il existe de nombreuses fonctions de dates et d'heures pouvant être utilisées dans des conditions, en voici quelques exemples.

La fonction IsDate renvoie True si la valeur est une date ou False si ce n'est pas le cas :

If IsDate(Range("A1")) Then 'Si la valeur est une date

La fonction Day permet d'extraire le jour d'une date :

If Day(Range("A1")) = 1 Then 'Si c'est le premier jour du mois

La fonction Year permet d'extraire l'année d'une date :

If Year(Range("A1")) = 2021 Then 'Si c'est une date de l'année 2021

La fonction Weekday renvoie le numéro du jour de la semaine :

If Weekday(Range("A1"), 2) >= 6 Then 'Si c'est un samedi ou un dimanche

La fonction Date renvoie la date actuelle :

If Range("A1") < Date Then 'Si la date est passée

Fonction IsEmpty

La fonction IsEmpty renvoie True si la variable a été initialisée ou False si ce n'est pas le cas :

If IsEmpty(maVariable) Then 'Si la variable a été initialisée

Dans cet exemple, la condition est vraie car aucun type ni valeur n'ont été attribués à maVariable :

Sub exemple()
    
    Dim maVariable
    
    If IsEmpty(maVariable) Then
        MsgBox "Ma variable n'a pas été initialisée !"
    Else
        MsgBox "Ma variable contient : " & maVariable
    End If

End Sub

Condition en fonction de la comparaison de 2 chaînes de caractères

Jusque-là nous n'avons vu que cela :

maVariable = "Exemple 12345"

If maVariable = "Exemple 12345" Then '=> Vrai

Dans ce cas, les 2 chaînes de caractères sont identiques, l'expression est donc vraie.

Maintenant, pour vérifier si la variable contient la valeur 12345 sans tenir compte des autres caractères, nous utiliserons l'opérateur Like ainsi que * devant et derrière la valeur à rechercher.

Le caractère * peut remplacer : aucun, un ou plusieurs caractères :

maVariable = "Exemple 12345"

If maVariable Like "*12345*" Then '=> Vrai

Le caractère # peut remplacer un caractère numérique de 0 à 9 :

maVariable = "Exemple 12345"

If maVariable Like "Exemple 12###" Then '=> Vrai

Le caractère ? peut remplacer un caractère quelconque :

maVariable = "Exemple 12345"

If maVariable Like "?xemple?1234?" Then '=> Vrai

Nous pouvons également remplacer un caractère en fonction d'une plage de caractères ou de caractères précis :

maVariable = "Exemple 12345"

If maVariable Like "[BIEN]xemple 1234[4-7]" Then '=> Vrai

Pour remplacer un caractère non compris dans les valeurs entre crochets, un ! doit être ajouté après [ :

maVariable = "Exemple 12345"

If maVariable Like "[!FAUX]xemple 1234[!6-9]" Then '=> Vrai
Un caractère en majuscule n'est pas égal à ce même caractère en minuscule. Pour ne pas faire de distinctions entre majuscules-minuscules, placez Option Compare Text en début de module.