Variable ou procédure attendue et non un module

Une question revient régulièrement ces jours-ci sur le blog : « en VBA, quand j’essaie d’exécuter du code VBA, j’obtiens l’erreur suivante : Variable ou procédure attendue et non un module« . Voici comment éviter l’erreur.

Le problème

Imaginez une procédure simple comme celle-ci :

Pour la tester :

  1. Vous créez un module standard dans votre base de données (ou vous ouvrez un module standard existant).
  2. Vous recopiez le code de la procédure dans le module.
  3. Vous placez le curseur quelque part dans le code.
  4. Vous cliquez sur l’icône Exécuter Sub/UserForm (le triangle vert sur la barre d’outils principale de Visual Basic Editor).

Et ça marche !

Vous pouvez tester d’une autre manière :

  1. Ouvrez la fenêtre Exécution (Ctrl + G).
  2. Dans cette fenêtre, au bas de l’écran, vous tapez le nom de la procédure, soit :
    ProcTest
  3. Terminez la ligne par [Entrée].

Et ça doit marcher aussi… mais parfois non ! 😉

VBA - Variable attendue

La solution

Le problème vient du fait que vous avez nommé votre module (le module standard qui contient le code VBA) du même nom que la procédure ou la fonction VBA. Changez le nom de votre module, et le problème devrait être réglé. Pour plus de détails sur la façon de faire, consultez l’article Nommez vos modules.

Conseil

D’une manière générale, donnez systématiquement à vos modules un nom différent des blocs de code VBA qu’ils contiennent.

Une pratique classique, pour éviter le problème, consiste à préfixer les modules de « mod » (par exemple : modFormulaires, modDates, modFacturation ; avec ou sans espace). De cette manière, plus aucune confusion possible !

Vous aimerez aussi...

Laisser un commentaire

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