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 !

Nenesandco

XLDnaute Nouveau
Bonjour à tous,


Est-il possible d'inscrire une procédure SET en dehors d'une procédure SUB ?

Je m'explique : j'ai une variable que je souhaite reprendre dans tous mes modules. Cette variable représente une plage de cellules. J'ai inscrit Public devant la variable.

Enfin j'ai voulu attribuer une plage à cette dite variable en inscrivant Set :

Code:
'Feuille REF:
'Table Lieux de la feuille REF
Public Lieux As Range
    Set Lieux = Sheets(5).Range("A1:H141")

Sub

End Sub

Seulement, quand je lance ma macro, on m'indique "Instruction incorrecte à l'extérieure d'une procédure".

Comment puis-je faire ?

Cela veut-il dire qu'il faudra que je redéfinisse à chaque fois ma plage alors que la variable reste la même ?

Merci pour vos lumières ! 🙂
 
Re : Vba - set + sub

Bonjour.
Non, ça signifie qu'une instruction exécutable n'est valide qu'à l'intérieur d'une procédure, qui peut s'exécuter.
Peut être que ce qui irait bien, c'est un nom dans le classeur se référant à cette plage. Il suffirait de le spécifier entre [] dans le code.
 
Dernière édition:
Re : Vba - set + sub

Bonjour à tous,

Une solution serait de rajouter une propriété (en lecture seule) au classeur en rajoutant ce code dans le module ThisWorkbook :
VB:
Public Property Get Lieux() As Range:
    Set Lieux = ThisWorkbook.Sheets(5).Range("A1:H141")
End Property
Ainsi, on peut accéder à la Range depuis partout avec ce code :
VB:
ThisWorkbook.Lieux

A+
 
Re : Vba - set + sub

Bonjour,

Est-il possible d'inscrire une procédure SET en dehors d'une procédure SUB

Code:
'======= Module standard 1

Private m_Lieux As Range

Public Property Set Lieux(argRange As Range)

    Set m_Lieux = argRange

End Property

Public Property Get Lieux() As Range

    Set Lieux = m_Lieux

End Property

Code:
'======= Module standard 2

Public Sub MaPlage()

    Dim x As Range

    Set x = ActiveSheet.Range("A1:A1")

    Set Lieux() = x

    Set x = Lieux()

    Debug.Print x.Value

End Sub

C'est ça ?
 
Re : Vba - set + sub

Bonsoir à tous


Je suis l'avis de Dranreb
Mettre cette ligne dans WorkBook_Open
Sheets(5).Range("A1:H141").Name = "Lieux"

On peut alors utiliser Lieux partout dans le code
Code:
Sub b()
MsgBox [Lieux].Address
End Sub
Code:
Sub C()
MsgBox [Lieux].Count
End Sub
 
Re : Vba - set + sub

Bonjour à tous

En général, je nomme ma zone sur la feuille zone par exemple puis j'écris dans la macro Range("zone").

A tester 🙂.

De plus, il suffit de taper F5 pour voir et aller vers les zones nommées.
 
- 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
4
Affichages
403
Réponses
2
Affichages
667
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
370
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
908
Retour