rendre accessible variable vers autres modules

  • Initiateur de la discussion carlos
  • Date de début
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
 

CBernardT

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

carlos

Guest
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 ?
 
C

carlos

Guest
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
 

michel_m

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

Discussions similaires

Réponses
3
Affichages
608

Statistiques des forums

Discussions
312 980
Messages
2 094 124
Membres
105 941
dernier inscrit
antho_qh