Vous avez apprécié ?
Cliquez ;-)

Cours VBA : les conditions (suite)

Condition en fonction d'un type

IsNumeric (fonction 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 'SI LA VALEUR EST NUMERIQUE ...

Le code suivant est identique au premier (il n'est pas nécessaire d'indiquer = True puisque que l'on cherche automatiquement à savoir si la condition est vraie) :

If IsNumeric(Range("A1")) Then 'SI LA VALEUR EST NUMERIQUE ...

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 NUMERIQUE ...
If Not IsNumeric(Range("A1")) Then 'SI LA VALEUR N'EST PAS NUMERIQUE ...

D'autres fonctions proches de IsNumeric :

If IsDate(Range("A1")) Then 'SI LA VALEUR EST UNE DATE ...
If IsEmpty(Range("A1")) Then 'SI VIDE ...
If var_objet Is Nothing Then 'SI OBJET NON INITIALISE ...

Condition en fonction du type d'une variable

Pour effectuer des actions en fonction du type d'une variable (Variant), nous aurons besoin de la fonction VarType.

Après avoir ajouté le signe =, la liste des types apparaît :

vartype - conditions suite
If VarType(ma_variable) = vbInteger Then 'SI ma_variable est de type Integer ...

La valeur des constantes :

ConstanteValeur
vbEmpty0
vbNull1
vbInteger2
vbLong3
vbSingle4
vbDouble5
vbCurrency6
vbDate7
vbString8
vbObject9
vbError10
If VarType(ma_variable) = vbInteger Then 'SI ma_variable est de type Integer ...
'Identique à :
If VarType(ma_variable) = 2 Then 'SI ma_variable est de type Integer ...

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

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

ma_variable = "Exemple 12345"

If ma_variable = "Exemple 12345" Then ' => VRAI

Les 2 chaînes de caractères sont identiques ici, rien d'extraordinaire ...

Maintenant, si nous voulons vérifier que la variable contienne bien 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 :

ma_variable = "Exemple 12345"

If ma_variable Like "*12345*" Then ' => VRAI

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

ma_variable = "Exemple 12345"

If ma_variable Like "Exemple 12###" Then ' => VRAI

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

ma_variable = "Exemple 12345"

If ma_variable 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 : ? * #
ma_variable = "Exemple 12345"

If ma_variable 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 [ :

ma_variable = "Exemple 12345"

If ma_variable Like "[!FAUX]xemple 1234[!6-9]" Then ' => VRAI
Remarque : 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.