Portée des variables tableau dans plusieurs sub

néné06

XLDnaute Accro
Bonsoir le Forum,

Je rencontre quelques problèmes sur la portée des variables tableau!

Existe t'il un moyen d'utiliser les variables tableau dans plusieurs sous programme d'un userform sans devoir à chaque sous programme écrire l'initialisation du tableau
Ici,
Dim tabl1()
tabl1 = Range("A1:A" & numli).Value 'charge tabl1 avec les données de la col A

Dans l'exemple suivant, j'ai écrit un code qui fonctionne dans le Public Sub charge_tab(), mais pas dans Public Sub prog_suite() à cause du manque d'initialisation du tableau.

Code:
Public Sub UserForm_Activate()
    charge_tab
    prog_suite
End Sub
Public Sub charge_tab()
    Dim tabl1()
    numli = Cells.Find("*", , , , , xlPrevious).Row 'derniere ligne écrite
    tabl1 = Range("A1:A" & numli).Value 'charge tabl1 avec les données de la col A
    '*****  VERIFICATION LECTURE DES VAR TAB ****************
        For a = 1 To numli
            s = tabl1(a, 1)
        Next a
End Sub
Public Sub prog_suite()
    For a = 1 To numli
        s = tabl1(a, 1)
    Next a
End Sub

D'avance, merci pour vos réponses!

René
 

néné06

XLDnaute Accro
Re : Portée des variables tableau dans plusieurs sub

Re,

Après un essai, cela ne fonctionne pas et m'indique "Tableau ou fonction non définie"
Public Sub prog_suite()
For a = 1 To numli
s = tabl1(a, 1)'ICI l'ERREUR
Next a
End Sub
A+

René
 

Dranreb

XLDnaute Barbatruc
Re : Portée des variables tableau dans plusieurs sub

Bonsoir.
Non. C'est la base de VBA. Les variables qui doivent être partagées par toutes les procédures d'un module doivent être globales, c'est à dire déclarées en tête de ce module avant toute procédure.
De préférence avec Private plutôt que Dim lorsqu'elles ne sont utilisées que dans ce module,
et Public si, déclarées dans un module standard, on veut qu'elles soient connues dans tout le projet, ou bien, si déclarée dans tout type de module autre, on veut qu'elles deviennent des propriétés de l'objet représenté.
Au fait, pourquoi avez vous défini certaines procédures comme des méthodes de l'UserForm ?
 
Dernière édition:

néné06

XLDnaute Accro
Re : Portée des variables tableau dans plusieurs sub

Bonsoir Dranreb,

Je fais parvenir un exemple simple et je dois déclarer les variables tableau en "Global",

Merci!

René
 

Pièces jointes

  • Classeur1.xlsm
    689.4 KB · Affichages: 32
  • Classeur1.xlsm
    689.4 KB · Affichages: 33

Dranreb

XLDnaute Barbatruc
Re : Portée des variables tableau dans plusieurs sub

Comme dit, il n'y a aucune utilité à mettre les Sub charge_tab et lire_tab dans un module séparé. Elle peuvent rester dans l'UserForm si elles ne sont utilisées que par lui. Mais il faut déclarer Private Tabl1() en tête de celui ci.
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 331
Messages
2 087 352
Membres
103 526
dernier inscrit
HEC