Bonjour.
Dans un document Word, je crée un module standard nommé Module1, une UserForm nommée UserForm1 et un module de classe nommé Classe1.
Dans Module1, j'écris la procédure
Code :
- Sub MdCoucou()
- Debug.Print "Coucou de Module1"
- End Sub
|
Dans UserForm1, j'écris la procédure
Code :
- Sub UFCoucou()
- Debug.Print "Coucou de UserForm1"
- End Sub
|
et dans Classe1 la procédure
Code :
- Sub ClCoucou()
- Debug.Print "Coucou de Classe1"
- End Sub
|
1. Dans l'éditeur VBE, si je mets le curseur dans la procédure MdCoucou, et tape F5, le message attendu s'affiche normalement dans la fenêtre Exécution.
2. Pour la procédure UFCoucou, la méthode précédente échoue.
Je vais maintenant dans la fenêtre Exécution, et je tape
Le message attendu s'affiche.
3. Pour la procédure ClCoucou, la première méthode échoue, et si je tape
dans la fenêtre exécution, un message me dit
Erreur dexécution '424' :
Objet requis
Je tape donc
Code :
- Set cl = New Classe1
|
puis
et là, ça fonctionne.
Voici mes questions :
Comment expliquer ces différences de comportements ?
Pour le module de classe, il faut instancier la Classe1 pour utiliser la procédure ClCoucou.
Je croyais que les UserForm étaient des modules de classe spéciaux. Mais la méthode 2 montre que je suis dans l'erreur puisque l'instruction UserForm1.UFCoucou fonctionne sans avoir à instancier un objet Userform1.
Quelle est la nature exacte des UserForm ? Classe ou objet ?
Merci d'avance pour vos réponses