Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1093 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Module standard, module de classe et Userform

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Module standard, module de classe et Userform

n°2412400
jpl38
Posté le 16-03-2022 à 09:37:02  profilanswer
 

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 :
  1. Sub MdCoucou()
  2.   Debug.Print "Coucou de Module1"
  3. End Sub


Dans UserForm1, j'écris la procédure  

Code :
  1. Sub UFCoucou()
  2.   Debug.Print "Coucou de UserForm1"
  3. End Sub


et dans Classe1 la procédure  

Code :
  1. Sub ClCoucou()
  2.   Debug.Print "Coucou de Classe1"
  3. 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  
 

Code :
  1. UserForm1.UFCoucou


   Le message attendu s'affiche.
3. Pour la procédure ClCoucou, la première méthode échoue, et si je tape  
 

Code :
  1. Classe1.ClCoucou


   dans la fenêtre exécution, un message me dit  
      Erreur dexécution '424' :
      Objet requis
   Je tape donc  
 

Code :
  1. Set cl = New Classe1


   puis
 

Code :
  1. cl.clCoucou


   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

mood
Publicité
Posté le 16-03-2022 à 09:37:02  profilanswer
 

n°2412500
rufo
Pas me confondre avec Lycos!
Posté le 16-03-2022 à 22:46:35  profilanswer
 

Ca vient de la portée des variables et des fonctions. C'est tout à fait normal.
UserForm est un objet qui instancie une classe. Les méthodes d'une classe ne peuvent être appelées sans qu'une la classe soit instanciée via un objet sauf si les méthodes sont "static".
Si tu n'as aucune notion de POO (programmation orientée objet), tu vas bien galérer pour comprendre qu'est-ce qui est accessible depuis où. :/


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2412504
jpl38
Posté le 16-03-2022 à 23:27:09  profilanswer
 

Merci pour ta réponse.
Le problème, c'est de savoir si un userform est une classe, ou un objet.
Dans la fenêtre exécution, si je tape

Code :
  1. UserForm1.UFCoucou

j'obtiens

Code :
  1. Coucou de UserForm1

Donc UserForm1 se comporte comme un objet.
 
Si je tape

Code :
  1. set uf = new UserForm1
  2. uf.UFCoucou

j'obtiens

Code :
  1. Coucou de UserForm1

et là, UserForm1 se comporte comme une classe.

n°2412507
rufo
Pas me confondre avec Lycos!
Posté le 17-03-2022 à 07:56:39  profilanswer
 

VBA étant un langage mal branlé, UserForm1 est peut-être à la fois une classe et un objet. Il est au moins une classe vu que tu peux faire un New.
J'ai un projet en VBA sous Outlook avec un UserForm : je vais regarder aujourd'hui.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°2412598
jpl38
Posté le 17-03-2022 à 19:11:30  profilanswer
 
n°2412681
kiki29
Posté le 19-03-2022 à 06:53:06  profilanswer
 

Salut, si cela peut aider :
Office et les modules de classes
https://tissotemmanuel.developpez.c [...] de-classe/


Message édité par kiki29 le 19-03-2022 à 06:53:42

---------------
Myanmar 90/91 : http://gadaud.gerard.free.fr/publi [...] index.html
n°2412686
jpl38
Posté le 19-03-2022 à 15:59:21  profilanswer
 

Merci pour ta réponse très matinale


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Module standard, module de classe et Userform

 

Sujets relatifs
staruml et diagrammes de classeModule mise à jours prestashop
NSErrorClientCertificateStateKey depuis autre classeModule pymedia pour python 3.7 windows 10
SOS USERFORMcreer un userform uniquement par code vb dans outlook
tableau de classe dans une classeApache rewrite module
[Perl] Module JSON / Lire un fichierNom d'une instance de classe
Plus de sujets relatifs à : Module standard, module de classe et Userform


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR