Même nom UserForm dans 2 classeurs différents

Bonjour,

Je voulais savoir si 2 UserForm dont les sub sont déclarés en Public dans 2 classeurs différents posent un problème ?

Si je les déclare en Private, puis-je les utiliser dans plusieurs modules d'un classeur ?

De même, pour une variable qui sert dans plusieurs module doit-elle est forcément déclarée public ?

Bonjour,

Il y a rarement des problèmes car la Sub exécutée est la plus "proche" lorsque plusieurs Sub ont le même nom, d'abord dans le même module, puis le même classeur et ensuite les autres classeurs. Cependant pour éviter les interactions entre classeurs , mettre dans un module standard :

Option Private Module

Ça limite l'utilisation des Sub publiques au classeur qui les contient.

Le plus simple est d'éviter les noms identiques.

Bonsoir et merci de la réponse,

Si je comprends bien, je peux mettre en tête du module "Option Private Module" où j'ai déclaré mes variables Public et Const qui sont utilisées dans tous mes modules ainsi que des sub utilisés dans plusieurs modules !!!

Par contre, je mets toutes mes instructions en Privé pour mes UserForm et pourront être utilisés dans plusieurs modules sans problèmes.

Ex du mon classeur :

Module1 = Variables publiques et constantes, Sub servant à plusieurs Sub de Module différent

Module2 = Sub avec appel à variables et Sub du mModule1 + UserForm01 et UserForm02

Module3 = Sub avec appel à variables et Sub du mModule1 + UserForm01 et UserForm02

……..

UserForm01 = Toutes les instructions en Privé

UserForm02 = Toutes les instructions en Privé

Donc en mettant "Option Private Module" en tête du Module1, ça évite d'avoir un problème avec des macros d'autres classeurs ouverts ?

Bonjour,

Les variables déclarées publiques dans un module standard sont utilisables dans tous les projets (i.e. classeurs)

Lorsqu'on ajoute Option Private Module dans un module standard du projet, ces variables publiques ne sont plus utilisables que dans ce projet (classeur).

Les variables déclarées en tête de module d'objet et les variables déclarées privées dans un module standard ne sont utilisables que dans le module.

Les variables déclarées dans une procédure ou une fonction ne sont utilisables que dans cette procédure ou fonction (locales).

Lorsqu'un code est bien conçu, il n'utilise pas de variables publiques (de projet) et rarement des variables privées (de module).

Il est préférable de transférer les variables locales en argument des procédures ou des fonctions appelées.

Bonsoir et merci de la réponse.

Etant débutant en VBA, je ne comprends pas tout.

Si on travaille dans un projet on peut rester en Private mais si on travaille sur 2 projets certaines variables doivent être Public tel qu'ouvrir un projet et déverser des informations dans le projet ouvert (Valeurs, texte, ...)

Non, une variable ne peut être utilisée que dans une procédure (ou une fonction), et cette variable peut être utilisée pour agir sur n'importe quel classeur ouvert depuis cette procédure.

On peut la créer, lui donner une valeur, l'utiliser et la détruire dans une seule et même procédure.

Pour éviter des procédures fleuves, on les scinde en sous-procédures plus courtes, c'est là que se pose le problème de la portée des variables : ce qui est conseillé, c'est de leur envoyer les variables utiles en paramètres.

En procédant ainsi, on n'utilise que des variables locales (pas de privées, ni de publiques).

Bonsoir et merci de la réponse,

J'ai du mal à comprendre tous et ce que je peux lire dans des livres VBA ou sur le net.

Je préfèrerai trouver des exemples clairs car les supports sont trop littéraires pour moi.

Cela ne me permet pas de définir mes variables comme je les utilises dans mon projet avec ouverture d'un autre projet où je documente une information.

Merci quand même de vos réponses

Bonjour,

Malheureusement, je ne connais aucun cours qui soit vraiment rigoureux.

Dans la phase d'apprentissage, par esprit de simplification, ils ne respectent pas les conseils de base (même quand ils les préconisent).

Si tu postes ton fichier, je veux bien regarder tes déclarations de variables.

Bonjour et merci de la réponse,

C'est un fichier regroupant des Macros de bases afin d'en faire un catalogue qui puisse servir dans l'avenir pour faire des Macros plus importantes.

Il est en cours de modification car au fur et à mesure j'apprends certaines astuces et règles quelques bugs.

Donc c'est un fichier de débutant.

Je mets 2 fichiers car le fichier principal appel un 2ième fichier (Celui dont le nom commence par _VBA.....)

1ier fichier :

2ième fichier :

Bonjour Jean-François

J'ai regardé ton code, je ne sais pas où tu as trouvé cette méthode de travail mais j'y trouve tous les défauts que je m'évertue à déconseiller. Je les ai rappelés dans le fichier joint.

J'ai repris une petit partie de ton code :

Tout se fait à partir de l'userform (Ouvrir, Afficher, Modifier, empêcher d'utiliser la croix ....)

Il n'y a aucune variable publique !

Et j'ai pris le temps de corriger tes commentaires et de commenter correctement chaque nouvelle ligne de code.

Le fichier :

Bonsoir et merci pour le fichier

Je l'avais fait selon ce que j'ai trouvé sur le net et sur certains livres

Rechercher des sujets similaires à "meme nom userform classeurs differents"