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.

Attention: Et si vous pensez que ce problème ne vous concerne pas car vous n'utilisez pas les Variant, détrompez vous! En VBA, toute variable dont le type n'est pas défini explicitement (avec Dim) est considérée par défaut comme un Variant!

Exemple:

Résultat du test:

VBA: Erreur 13 - incompatibilité de type

 

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 suit 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

Si vous préférez avoir une fonction dédiée à ce test (et en français), je vous propose 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 ceux qui liront votre code VBA)…

Si vous souhaitez en apprendre plus sur le type Variant, vous pouvez consulter la page dédiée à ce sujet sur le site internet de Microsoft.

Pour aller plus loin en VBA…

Et voici quelques autres articles qui pourraient vous servir:

 

Laissez un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

5 commentaires sur “VBA: vérifier si Variant est vide (Empty)”