Partage d'une variable entre module et feuille

  • Initiateur de la discussion Initiateur de la discussion Eliane
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

E

Eliane

Guest
Bonsoir à tous,

Sous Excel :

1) Est-il possible de modifier une variable située dans un module, grace à du code VBA situé dans un worksheet ? En bref comment avoir une variable globale à un module et à une feuille ?

2) Dans un module, existe t-il une syntaxe pour appeler une sub ou une fonction située dans un worksheet ou dans un workbook ?

D'avance merci de vos conseils

Eliane
 
Bonsoir Eliane, 🙂
La réponse pour le point N°1 est Oui, il suffir de déclarer cette variable dans LE module comme Public

Option Explicit
Public ToTo As String


par exemple
La réponse pour le point 2) est Oui aussi, mais il faut que la procédure concernant cet Objet (Classeur, Feuille) ne soit pas déclarée private et donner de façon explicite dans le code du module l'objet auquel on s'adresse !

Vois ces fils :
Ce lien n'existe plus
à 10h35 par claude etc...

Lien supprimé
sans trop de réponse pour le moment...


bonne nuit,

Brico

Message édité par: Bricofire, à: 18/05/2006 23:45
 
Salut
Modules de classe : modules liés à une feuille
Modules généraux : modules indépendants.

Si tu crées une macro dans un module de classe, elle n'est déclenchée (en principe) que par une action de la feuille associée.

Si tu crées une macro dans un module général, (nom à la création du type module1) elle peut être déclenchée de n'importe où dans le classeur (elle est même applicable à d'autres classeurs)

Si tu déclare une variable dans une macro, elle n'est valide que pour la macro.
Si tu la déclares en haut d'un module de classe, (en Public) elle est valable pour toutes les macros du module.
Si tu la déclare en haut d'un module général, elle est valable pour tout le classeur
A+
 
Module de Classe...

Bonjour tout le monde

Danger ! Gorfael, c’est méritoire de vouloir aider, mais si on prend la peine de vérifier ses sources et si on ne risque pas de semer l’erreur avec risque de contagion etc.. Beaucoup se sont retrouvés au Zop au moins une fois (et je ne suis pas exempt d’erreur), mais pas à l’aveuglette.
Si dans le fenêtre VBA d’une feuille vierge tu insères, un USF, un Module (standard, non explicitement), puis un Module de Classe tu te rends compte au premier coup d’œil que l’explorateur de projets ne classe pas du tout les modules d’objets Classeur et feuilles, avec les modules de Feuilles (USF), ni avec les modules standards, ni avec ceux de classe. Un module de Classe représente un nouvel objet personnalisé. De plus pour citer Laurent Longre « Il ne manque que les procédures événementielles, qui ne sont pas supportées par les modules de classe, malheureusement. », ça fait une différence avec les modules objets feuilles invoqués dans ta réponse.
Donc pour ce qui est de la portée d’une variable et de son état Public ou non, voir ci-dessous basiquement ce que donne l’aide VBA, une variable peut être déclarée (avec Classe J) dans un module standard fort heureusement.
Pour les modules de classe , je n’ai pas le niveau pour te les expliquer, mais je te donne quelques liens de gens qui le font fort bien..🙂

http://www.excel-downloads.com/html...d&PHPSESSID=c81c23d8331c913724aea42a08f21cb6 page 8

http://www.excel-downloads.com/telechargements/file/exemples-modules-de-classe/242.htm

ou encore ici :
http://www.info-3000.com/vbvba/modulesdeclasse.php

ou dans le chapitre procédure évènementielle chez LL :
http://xcell05.free.fr/

Aide VBA :
Déclaration de variables …////…
Utilisation de l'instruction Public
L'instruction Public permet de déclarer des variables publiques dans un module.
Public strName As String
Les variables publiques peuvent être utilisées dans n'importe quelle procédure du projet. Si une variable publique est déclarée dans un module standard ou dans un module de classe, elle peut également être employée dans n'importe quel projet faisant référence au projet où la variable publique est déclarée.
module de classe
Module contenant la définition d'une classe, notamment les définitions de ses propriétés et de ses méthodes.

module standard
Module contenant uniquement des définitions et des déclarations de procédures, de types et de données. Les définitions et les déclarations de niveau module dans un module standard sont par défaut de type Public. Les modules standard étaient appelés 'modules de code' dans les versions précédentes de Visual Basic.

Remarques
Les variables déclarées avec l'instruction Public sont accessibles à toutes les procédures, dans l'ensemble des modules de toutes les applications, à moins que Option Private Module ne soit activé. Dans ce cas, les variables ne sont publiques qu'au sein du projet qui les accueille.
Attention L'instruction Public ne doit pas être utilisée dans un module de classe pour déclarer une variable chaîne de longueur fixe.
Utilisez l'instruction Public pour déclarer le type de données d'une variable. Par exemple, l'instruction suivante déclare une variable de type Integer :
Public NumberOfEmployees As Integer
Vous pouvez aussi utiliser l'instruction Public pour déclarer le type objet d'une variable. L'instruction suivante déclare une variable pour une nouvelle instance d'une feuille de calcul.
Public X As New Worksheet
Si le mot clé New n'est pas utilisé pour déclarer une variable objet, la variable qui fait référence à l'objet ne peut être utilisée avant d'avoir été associée à un objet existant par le biais de l'instruction Set. Tant qu'elle n'est pas associée à un objet, la variable objet déclarée a la valeur spéciale Nothing, indiquant qu'elle ne fait référence à aucune instance spécifique d'un objet.
Vous pouvez également utiliser l'instruction Public suivie de parenthèses vides pour déclarer un tableau dynamique. L'instruction ReDim permet ensuite de définir dans une procédure le nombre de dimensions et d'éléments du tableau. Si vous tentez de déclarer à nouveau une dimension d'un tableau dont la taille a été explicitement indiquée dans une instruction Private, Public ou Dim, une erreur se produit.
Si vous ne précisez aucun type de données ou d'objet et si le module ne comporte aucune instruction Deftype, la variable est de type Variant par défaut.
Lors de l'initialisation des variables, une variable numérique prend pour valeur initiale 0, une chaîne de longueur variable prend pour valeur initiale une chaîne de longueur nulle (''), et une chaîne de longueur fixe est remplie de zéros. Les variables de type Variant ont la valeur Empty à l'initialisation. Chaque élément d'une variable de type défini par l'utilisateur est initialisé comme s'il s'agissait d'une variable distincte.

Public
Les variables déclarées à l'aide de l'instruction Public sont visibles dans toutes les procédures de tous les modules de toutes les applications, sauf si Option Private Module est activé. Dans ce cas, les variables sont publiques uniquement dans le projet auquel elles appartiennent.

portée
Définit la visibilité d'une variable, d'une procédure ou d'un objet. Par exemple, une variable déclarée comme Public est visible dans toutes les procédures de l'ensemble des modules dans un projet référant directement, sauf si Option Private Module est activé. Si Option Private Module est activé, le module lui-même est privé et, de ce fait, est invisible aux projets référants. Les variables déclarées dans une procédure ne sont visibles que dans la procédure et perdent leur valeur entre les différents appels, sauf si elles sont déclarées comme Static.

Déclaration de variables …////…
Utilisation de l'instruction Public
L'instruction Public permet de déclarer des variables publiques dans un module.
Public strName As String
Les variables publiques peuvent être utilisées dans n'importe quelle procédure du projet. Si une variable publique est déclarée dans un module standard ou dans un module de classe, elle peut également être employée dans n'importe quel projet faisant référence au projet où la variable publique est déclarée.



Bon tout ceci pour dire qu’il est peut-être sage quand on post une affirmation qui contredit celle d’un post précédent de vérifier ce qu’il en est, pour au minimum remettre l’auteur du précédent sur la voie s’il y a lieu… Ou de conforter ses connaissances .

Bonne journée,

Brico
 
Re:Module de Classe...

Salut Bricofire

Bon tout ceci pour dire qu’il est peut-être sage quand on post une affirmation qui contredit celle d’un post précédent de vérifier ce qu’il en est, pour au minimum remettre l’auteur du précédent sur la voie s’il y a lieu… Ou de conforter ses connaissances
T'es dans l'erreur quand tu dis que je te contredit : quand j'ai commencé à répondre, c'est parce qu'il n'y avait pas de réponse de faite. Ayant débordé sur d'autres activités, j'y suis revenu assez tard et j'ai posté.

Je serais d'une rare outrecuidance de vouloir te contredire, au vu de tes posts qui traînent partout sur le forum (et qui me permettent souvent de m'améliorer - enfin j'espère).

Pour le reste, effectivement, j'ai peut-être une vision déformée des modules, due à une utilisation plus tournée vers Access pour le code. Alors avant de m'enfoncer un peu plus, je vais d'abord aller visiter les liens que tu as mis sur ton post. Ils me permettront au minimum de visualiser mes lacunes, s'ils ne me permettent pas de les combler
A+
 
Re:Module de Classe...

Bonjour Brico, Gorfael et le Forum

Grâce à vous j'ai toute les informations utiles pour travailler sur mon projet.

Encore merci à vous et ce superbe Forum

Bises

Eliane
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
176
Retour