rendre accessible variable vers autres modules

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

C

carlos

Guest
bonsoir au forum

Comment rendre accessible une variable definie par une macro pour d'autres macros ?

Par exemple :
NbEleveClasse = Application.WorksheetFunction.CountA(Range('EleveClasse'))


Je souhaite recuperer NbEleveClasse dans d'autres modules sans avoir à reformuler cze code .

Merci et bonne nuit
 
Bonsoir Carlos,

L'aide Excel dit :

a)- Cet exemple utilise l'instruction Public au niveau module (section Général) d'un module standard pour déclarer de manière explicite des variables comme publiques, ce qui signifie qu'elles sont disponibles pour toutes les procédures de tous les modules de toutes les applications à moins que Option Private Module soit activée.

' Variable Integer de type Public.
Public Number As Integer

Nota : Cet exemple illustre l'instruction Option Private, utilisée au niveau module pour indiquer que la totalité du module est privée. Avec Option Private Module, les éléments de niveau module non déclarés en tant que Private sont disponibles pour les autres modules du projet, mais pas pour les autres projets ou applications.

Option private Module

b)- Cet exemple illustre l'instruction Option Private, utilisée au niveau module pour indiquer que la totalité du module est privée. Avec Option Private Module, les éléments de niveau module non déclarés en tant que Private sont disponibles pour les autres modules du projet, mais pas pour les autres projets ou applications.

Option private Module ' Indique que le module est privé.



c)- Cet exemple montre l'utilisation de l'instruction Private au niveau module pour déclarer des variables comme privées, ce qui signifie qu'elles ne sont disponibles que pour le module dans lequel elles sont déclarées.

' Variable Integer de type Private.
Private Number As Integer


Donc trois possibilités de déclararation des variables de façon courante. Une option peut d'ailleurs obliger à les déclarer :

Cet exemple utilise l'instruction Option Explicit pour forcer la déclaration explicite de toutes les variables. Si vous essayez d'utiliser une variable non déclarée, une erreur se produit au moment de la compilation. L'instruction Option Explicit est utilisée au niveau module uniquement.

Option explicit ' Exige la déclaration explicite des
' variables.
Dim MyVar ' Déclare la variable.

Cordialement

CBernardT

Message édité par: CBernardT, à: 27/03/2005 00:53
 
Merci CBERNARDT

g declaré ma variable ainsi

Sub ImporterNotePerfVersNote()
Public NbEleveClasse As Byte
NbEleveClasse = Application.WorksheetFunction.CountA(Range('EleveClasse'))
For Each celclasse In Sheets('classe').Range('e4:e' & NbEleveClasse + 3)

etc....

g une erreur de compilation ; 'attribut incorrect dans une procedure Sub ou fonction'.

Pourquoi ?
 
Bonjour


Option Private Module
Private NbEleveClasse As Byte

Le 'NbEleveClasse ' est egal à 0 alors qu'il coorectement calculé ci dessous à 25 ???????????????????
_________________________________________________________________
Sub ImporterNotePerfVersNote()
Dim celclasse, celnote As Variant
Dim NbEleveClasse As Byte
Dim NbEleveNote As Byte

NbEleveClasse = Application.WorksheetFunction.CountA(Range('EleveClasse'))
NbEleveNote = Application.WorksheetFunction.CountA(Range('EleveNote'))

For Each celclasse In Sheets('classe').Range('e4:e' & NbEleveClasse + 3)
For Each celnote In Sheets('note').Range('a4:a' & NbEleveNote + 3)

If celclasse = celnote Then celnote.Offset(0, 1).Value = celclasse.Offset(0, 2).Value
Next celnote
Next celclasse

end sub

Merci
End Sub
 
bonjour Carlos et Bernard

Si tu déclares NbeleveClasse en private , il ne faut pas la redéfinir dans la procédure (Dim NbEleveClasse As Byte)
_________________________________________________________________
Sub ImporterNotePerfVersNote()
Dim celclasse, celnote As Variant

Dim NbEleveNote As Byte


Nota:

Private ne fonctionne que dans le module entre procédure
Si tu utilises la variable dans plusieurs modules indiquer Public en durée de vie

Michel
 
- 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

Retour