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

Instancier un objet commun à plusieurs subs

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

  • InstancierObjetCommunAPLusieursModules.xls
    33 KB · Affichages: 62
  • InstancierObjetCommunAPLusieursModules.xls
    33 KB · Affichages: 65
  • InstancierObjetCommunAPLusieursModules.xls
    33 KB · Affichages: 66

Staple1600

XLDnaute Barbatruc
Re : Instancier un objet commun à plusieurs subs

Bonsoir

Voici ce que dit l'aide VBA
 
Dernière édition:

david84

XLDnaute Barbatruc
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+
 

CHALET53

XLDnaute Barbatruc
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

  • InstancierObjetCommunAPLusieursModules.xls
    42 KB · Affichages: 96
  • InstancierObjetCommunAPLusieursModules.xls
    42 KB · Affichages: 101
  • InstancierObjetCommunAPLusieursModules.xls
    42 KB · Affichages: 100

david84

XLDnaute Barbatruc
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+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…