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

déclaration type Public

gaël92

XLDnaute Nouveau
Bonjour,

je souhaite déclarer une variable de type Tableau As String comme étant une variable Public pour pouvoir l'utiliser dans plusieurs procédure.
Or un message d'erreur apparait disant : "Des constantes, chaines de longueur fixe, tableaux, types définis par l'utilisateur et instructions Declare ne sont pas autorisés comme membres Public de module d'objet."

Quelqun aurait une solution ?

Merci d'avance

 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Gael,
Essayez cette PJ avec :
VB:
Public Tableau_Equipement(0 To 6, 0 To 10)
Sub Essai()
On Error GoTo Fin
Dim i As Integer, j As Integer
For i = 0 To 6
    For j = 0 To 9
        Tableau_Equipement(i, j) = 10 * i + j
    Next j
Next i
[B5] = " Pas d' Erreur rencontrée"
Exit Sub
Fin:
[B5] = " Erreur rencontrée"
End Sub
Chez moi ( PC XL2007 ) ça marche.
MS dit qu'un tableau peut être déclaré en Public :

Addon : J'ai testé en mettant la macro dans une feuille. C'est interdit.
Vous devez déclarer votre array public dans un module standard.
Par contre une fois déclaré dans un module standard, vous pouvez l'utiliser dans une feuille.
 

Pièces jointes

  • Gael.xlsm
    14.2 KB · Affichages: 8
Dernière édition:

Dranreb

XLDnaute Barbatruc
Bonsoir.
Information: Dans un module objet (Worksheet, ThisWorkbook, UserForm, ou module de Classe) une variable Public en devient une Propriété. Elle ne peut être utilisée à l'extérieur du module sans préciser devant le nom de l'objet suivi d'un point.
J'ignore la raison des restrictions de types. On peut les contourner en les déclarant Private et en les transférant à l'aide de procédures Property.
De même d'ailleurs une Public Sub en devient une méthode.
 

patricktoulon

XLDnaute Barbatruc
bonsoir a tous
a ben en voila une bien bonne j'ai deja vu cette erreur dans les conditions
le message est clair c'est le dimensionnement qui n'est pas possible en public pas la variable tableau

c'est facilement contournable

public levraitoto as variant

sub machinchouette()
dim lefauxtoto(0 to 6,0 to 10)
for i= 0 to ...blablabla
for c= 0 to 10
lefauxtoto(i,c)="ligne " & i & "-"col " & c
next
next
levraitoto =lefauxtoto
end sub

'dans une autre sub dans un autre module
sub test()
msgbox levraitoto(0,0)
next

si la variable appartient a thisworkbook thisworkbook. devant
si c'est une feuille feuil1. devant
pareil pour un userform (attention ici lors du unload la variable est vidé )même si elle a été chargée avant le load
démonstration
tentative dans le module de la Feuil1


tentative a dimensionnement différé
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…