TOP

VBA-Leçon 7.2. Conditions (Conditions)

En plus de vérifier les conditions If...Then...Else et Select Case, nous pouvons également utiliser les vérifications suivantes :

  • comparaison des types de données (fonctions IsNumeric, IsDate, IsEmpty, opérateur Is Nothing)
  • comparaison des types de variables (fonction VarType)
  • comparer les flux de texte (opérateur Like)

  • Vérification du type de données

    IsNumeric (la fonction que nous avons utilisée dans la leçon précédente) renvoie VRAI (TRUE) si la valeur est un nombre, et FAUX (FALSE) si - n'est pas un nombre :

    If IsNumeric(Range("A1")) = True Then 'SI LA VALEUR EST UN NOMBRE...
    

    Le code suivant produit le même effet que le précédent (nous n'avons pas besoin d'inclure = True car la construction elle-même est une vérification de condition) :

    If IsNumeric(Range("A1")) = True Then 'SI LA VALEUR EST UN NOMBRE...
    

    Si nous voulons vérifier si une valeur n’est pas un nombre, nous pouvons le faire de deux manières :

    If IsNumeric(Range("A1")) = False Then 'SI LA VALEUR N'EST PAS UN CHIFFRE...
    
    If Not IsNumeric(Range("A1")) Then 'SI LA VALEUR N'EST PAS UN CHIFFRE...
    

    Examinons quelques fonctions supplémentaires similaires à IsNumeric :

    If IsDate(Range("A1")) Then 'SI LA VALEUR EST LA DATE...
    
    If IsEmpty(Range("A1")) Then 'SI VIDE...
    
    If var_object Is Nothing Then 'SI L'OBJET N'EST PAS DÉFINI...
    

    Vérifier le type d'une variable

    Pour exécuter des commandes basées sur le type d'une variable, nous devrons utiliser la fonction VarType.

    La liste des types de variables apparaîtra dès que l'on entrera le signe "=" :

    If VarType(my_variable) = vbInteger Then 'SI my_variable est de type variable Integer ...
    

    Valeurs des constantes :

    Constante Valeur
    vbEmpty0
    vbNull1
    vbInteger2
    vbLong3
    vbSingle4
    vbDouble5
    vbCurrency6
    vbDate7
    vbString8
    vbObject9
    vbError10
     If VarType(my_variable) = vbInteger Then 'SI my_variable est de type variable Integer ...
     'Est identique à :
     If VarType(my_variable) = 2 Then 'SI my_variable est de type variable Integer ...
    

    Comparer les flux de texte (Like)

    Un peu plus tôt, nous avons utilisé l'extrait de code suivant :

    my_variable = "Example 12345"
    
    If my_variable = "Example 12345" Then '=> VRAI (TRUE)
    

    Dans ce cas, les deux bandes sont identiques, mais si l'on veut vérifier si la variable contient la valeur "12345" ; sans considérer les autres caractères, nous devons alors utiliser la commande Like et l'opérateur * (astérisque) avant et après la valeur que nous recherchons.

    L'opérateur * (astérisque) se déchiffre comme : tout caractère ou ensemble de caractères :

    my_variable = "Example 12345"
    
    If my_variable Like "*12345*" Then '=> VRAI (TRUE)
    

    L'opérateur # (hachage) est décodé comme : tout caractère numérique unique de 0 à 9 :

    my_variable = "Example 12345"
    
    If my_variable Like "Example 12###" Then '=> VRAI (TRUE)
    

    Opérateur? (point d'interrogation) est déchiffré comme : n'importe quel caractère unique :

    my_variable = "Example 12345"
    
    If my_variable Like "?xample?1234?" Then '=> VRAI (TRUE)
    

    On peut également utiliser des caractères spécifiques ou un ensemble de caractères de la même manière :

    my_variable = "Example 12345"
    
    If my_variable Like "[DEF]xample 1234[4-7]" Then '=> VRAI (TRUE)
    

    Opérateur! (point d'exclamation) ajouté après [ signifiera : tout caractère non mis entre crochets :

    my_variable = "Example 12345"
    
    If my_variable Like "[!GHIJ]xample 1234[!6-9]" Then '=> VRAI (TRUE)
    
    Dans ce contexte, les caractères majuscules ne sont pas équivalents aux mêmes caractères minuscules. Si vous ne souhaitez pas faire la distinction entre les caractères majuscules et minuscules, écrivez simplement la commande Option Compare Text au début du module.