VBA: vérifier si Variant est vide (Empty)


Question: Comment vérifier si un objet de type Variant est vide en VBA?

Comme une variable de type Variant peut contenir toute sorte d'information, il est parfois difficile de vérifier si cette variable est vide ou pas. Souvent, on obtient un message d'erreur: "Object type mismatch" car le test de la valeur du Variant est d'un type différent que son contenu.

Pour contourner ce problème, il y a une solution toute faite: la fonction VBA IsEmpty.

Cette fonction VBA de base retournera la valeur True ou False indépendamment du type de contenu de la variable de type Variant (que ce soit un nombre, une chaîne de caractères ou un Array…).

Exemple d'utilisation d'une variable Variant et du test si elle est vide

Le code VBA qui suite montre une situation où on a besoin de voir si oui ou non, le classeur contient des liens vers d'autres classeurs. Ce type de contenu est idéal pour l'utilisation d'une variable du type Variant. On "remplit" donc cette variable avec des liens vers d'autres classeurs et ensuite, on vérifie s'il y en a ou pas (dans ce cas, la variable de type Variant sera vide) et d'après le résultat, on exécute des opérations nécessaires.

 

Fonction VBA prête à l'emploi: EstVariantVide

Et voici une fonction VBA qui renvoie "Vrai" ou "Faux" (True ou False) selon que la variable testée est vide ou pas.

 

Ce "problème" démontre bien que le type de variable Variant devrait être utilisé avec précaution. Il est certes facile de succomber à la tentation de l'employer pour pouvoir y loger "n'importe quoi" mais une fois qu'il est dans le code, sa gestion peut vite devenir relativement fastidieuse…

Je vous conseille donc de l'utiliser seulement là, où c'est inévitable. En définissant vos variables de manière précise, votre code VBA devient plus résistant aux erreurs, plus rapide et également plus lisible (pour vous comme pour les autres qui liront votre code VBA)…

 

 

4 0

Partagez cette page...
Share on FacebookShare on Google+Share on LinkedInTweet about this on TwitterShare on RedditShare on TumblrDigg thisEmail this to someone

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée.