Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Instancier un objet commun à plusieurs subs

  • Initiateur de la discussion Initiateur de la discussion david84
  • 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 !

david84

XLDnaute Barbatruc
Bonsoir le forum,
j'ai plusieurs sub dans lesquelles j'instancie le même objet (une plage de valeurs).
Je voudrais savoir s'il existe un moyen de l'instancier une seule fois et qu'il puisse être utilisé dans plusieurs sub, sans avoir à l'instancier à chaque fois (un peu comme le fait de déclarer une variable en tête de procédure dans un module).
Pour l'instant, le seul moyen que j'ai trouvé est d'instancier l'objet dans une sub, puis d'y faire appel dans mes autres sub mais je pense qu'il y a mieux à faire :
Code:
Option Explicit
Dim Plg As Range
Sub test1()
Set Plg = Worksheets(1).[A1].CurrentRegion
End Sub

Sub test2() 'fonctionne
Call test1
MsgBox Plg.Address
Set Plg = Nothing
End Sub

Sub test3() 'ne fonctionne pas
MsgBox Plg.Address
Set Plg = Nothing
End Sub
Je me pose également la même question pour un objet utilisé dans des modules différents : pour la déclaration de la variable, l'utilisation de "Public" résout la question mais comment faire pour l'instanciation des objets déclarés ?
Là encore, l'appel d'une sub d'instanciation des objets fonctionne mais n'y a-t-il pas mieux à faire (cf. fichier modules 1 et 2) ?
Merci
 

Pièces jointes

Re : Instancier un objet commun à plusieurs subs

Bonsoir

Voici ce que dit l'aide VBA
 
Dernière édition:
Re : Instancier un objet commun à plusieurs subs

Re
Merci JM pour ta réponse. Cependant, à moins de ne pas avoir tout saisi dans ta réponse ou de ne pas avoir été clair dans ma question, mon questionnement n'est pas à proprement parler sur la déclaration des variables (je n'en ai parlé que pour pour prendre cet exemple comme référence), mais sur l'instanciation des variables objet.

Quand j'utilise les mêmes variables dans différentes sub d'un même module, je n'ai besoin de la déclarer qu'une seule fois en tête de ce module.

Quand j'utilise les mêmes variables dans différentes sub de différents modules, je déclare ces variables en utilisant le terme Public devant le nom de la variable et celles-ci sont alors accessibles à l'ensemble des sub et fonction utilisant ces variables.

Ma question est :quand les objets utilisés dans plusieurs sub sont les mêmes, y-a-t-il un moyen de n'instancier les variables objet qu'une seule fois sans avoir à le faire dans chaque sub ?
Le moyen que j'ai trouvé est de les instancier dans une sub, puis d'appeler cette sub dans chacune de mes autres subs.
Cela fonctionne mais je me demandais s'il existait un autre moyen de procéder.
Désolé si la réponse à cette question se trouve dans ton message mais si c'est le cas, c'est que je ne l'ai pas comprise😕.
A+
 
Re : Instancier un objet commun à plusieurs subs

Bonjour,

Sans être un spécialiste, la solution doit résider dans l'utilisation d'un module de classe

un essi
 

Pièces jointes

Re : Instancier un objet commun à plusieurs subs

Re
Bonjour Chalet53,
merci pour ta réponse. Je ne connais pas les modules de classe, c'est donc une occasion d'y regarder de plus près. J'étudie ta proposition et te fais un retour.
A+
 
- 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

Discussions similaires

Réponses
0
Affichages
527
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…