Pourquoi systématiquement utiliser « VBA Option Explicit » ?

 

Mieux qu’un long argumentaire, illustrons le problème tel qu’il se pose fréquemment.

Envisageons  un module VBA sans « Option Explicit » contenant la procédure simplissime ‘AquoiSertOptionExplicit’ :

Sub AquoiSertOptionExplicit()
    Dim sUneVariable As String
    sUneVariable = "C'est la valeur"
    MsgBox "La valeur de la variable est :" & UneVariable
End Sub

Remarquons qu’une erreur s’est glissée lors de l’écriture de cette procédure : la variable affichée avec l’instruction « Msgbox » est ‘UneVariable’ alors que la variable valorisée dans la ligne précédente est ‘sUneVariable’.

(Que nous soyons novices ou aguerris en programmation, nous faisons très régulièrement ce type de coquille.) 

A l’exécution, aucune erreur ne se produit et le message affiché se présente ainsi :

A ce résultat, nous nous questionnons  : pourquoi cela ne correspond pas à ce que nous attendions ?

Nous chercherons l’origine du problème, en envisageant parfois de nombreuses hypothèses (qui s’avèreront inexactes) et perdrons beaucoup de temps avant de trouver la solution.

(Cet exemple est trivial et nous devrions le résoudre rapidemment. Dans  la réalité, il n’en est pas toujours de même.)

Ajoutons maintenant l’option Explicit’ dans la première ligne du module VBA :

Si maintenant, nous exécutons la procédure, un message d’erreur de compilation s’affiche tout en surlignant la variable non définie « UneVariable » : 

Il nous sera alors aisé de comprendre l’origine du problème et de corriger notre erreur d’écriture.

EN CONCLUSION

Ajoutons systématiquement ‘Option Explicit’ en tête de chacun de nos modules.

Remarque 1

Nous systématiserons l’ajout de ‘Option Explicit’ en tête de chaque module créé en cochant le paramètre ‘Déclaration des variables obligatoire’ de la boîte de dialogue ‘Options’ que l’on active par le menu VBA ‘Outils<Options…’ :

Remarque 2

Les macros créées par l’enregistreur de macro s’insèrent dans des modules ne possédant pas l’option ‘explicit’ lorsque la case

Déclaration des variables obligatoire’ n’a pas été cochée.

Remarque 3

Les modules attachés aux objets Excel (« Thisworkbook », « Feuil1 »…) de possèdent pas par défaut l’option Explicit. Il est conseillé de l’ajouter si nous plaçons du code dans ces modules.

 

Allons vers d’autres articles “Bonnes Pratiques VBA”.

Q