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).
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")) = 2023 Then 'Si c'est une date de l'année 2023
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 False si la variable a été initialisée ou True si ce n'est pas le cas :
If IsEmpty(maVariable) Then 'Si la variable n'a pas é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 :
- [abc] : remplace un des caractères suivants : a b c
- [a-g] : remplace un des caractères suivants : a b c d e f g
- [369] : remplace un des caractères suivants : 3 6 9
- [2-5] : remplace un des caractères suivants : 2 3 4 5
- [?*#] : remplace un des caractères suivants : ? * #
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