cs_Gegeleblond
Messages postés41Date d'inscriptionlundi 31 mars 2008StatutMembreDernière intervention 2 août 2010
-
3 avril 2008 à 21:17
cs_Gegeleblond
Messages postés41Date d'inscriptionlundi 31 mars 2008StatutMembreDernière intervention 2 août 2010
-
4 avril 2008 à 19:33
Bonjour,
Je souhaiterais declarer un tableau multidimensionnel en tant que variable globale.
J ai vu sur le site que pour declarer un tableau multidimensionnel, il fallait faire comme ci-dessous
Dim Table() As Double
ReDim Table(25,40) par exemple
Mais si je veux le declarer en tant que variable globale, je pensais ecrire dans (General) (Declaration):
Public Dim Table() As Double
ReDim Table(25,40)
Mais ca ne fonctionne pas, alors je suppose qu il doit y avoir un autre moyen de declarer un tableau multidimensionnel peut etre est ce possible d ecrire Dim Table(25,40) as Double directement et donc si je veux le mettre en variabe globale ecrire Public Table (25,40) as Double. Qu en pensez vous?
Autre probleme: au debut j avais ecrit Dim Table (a,b), la dimension du tableau donc les valeurs de a et b devant etre fixees par l utilisateur APRES l' execution. Or si on fait ca, un magnifique message d erreur apparait. "Constant expression required".
Existe t il un moyen de creer un tableau multidiemensionnel dynamique lol?
Je commence a deseperer.
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201822 3 avril 2008 à 23:20
Tu dois déclarer ton tableau Public dans un module standard (.bas) pour pouvoir l'utiliser ailleurs dans le programme (comme toute autre variable). Rien ne t'empêche de le redimensionner ailleurs que dans ce module, puisqu'il sera reconnu...
MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
cs_Jack
Messages postés14007Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 4 avril 2008 à 00:50
Salut
Oui, en Public dans un module BAS
Déclarer sans dimension rend le tableau dynamique, oui, et permet de redimensionner plus tard.
Ton erreur est sur l'instruction "Redim" si tu l'as placée dans la partie déclaration.
Il faut la mettre dans (au choix) :
- Sub Main si tu utilises Main d'un module pour démarrer ton application
- Form_Load si tu n'utilises pas de Sub Main
Le but étant de l'initialiser en dimension avant de voiloir l'utiliser.
Tu pourras encore la redimensionner plus tard si besoin (voir option Preserve de Redim)
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
pile_poil
Messages postés682Date d'inscriptionvendredi 6 avril 2007StatutMembreDernière intervention 4 août 20126 4 avril 2008 à 09:36
bonjour
tu as écrit ceci:
ReDim Table(NbProj, 64)
tu risques d'avoir des problemes car visual basic n'autorise le redimensionnement que sur la derniere dimmension quand tu fais un redim preserve pour modifier la taille de ton tableau sans perdre les données qu'il contient
si tu n'a pas besoin de modifier cette taille en cours d'execution ce n'est pas la peine de faire un tableau dynamique :)
cs_lermite222
Messages postés492Date d'inscriptionjeudi 5 avril 2007StatutMembreDernière intervention 2 juillet 20124 4 avril 2008 à 13:42
Bonjour,
En complément de l'explication de Pile_poil, les mots Public et dim ne doivent pas êtres employé conjointement.
Citation...
Mais si je veux le declarer en tant que variable globale, je pensais ecrire dans (General) (Declaration):
Public Dim Table() As Double
ReDim Table(25,40)
si tu met.. Dim Table() As Double / le tableau n'est visible que dans le module où la déclaration est faite.
Par contre si tu met... Public Table() As Double / il serra visible dans toute l'appli et pourra être redimentionné quand nécessaire.
Je ne comprend d'ailleur pas comment tu a pu écrire ce code, l'éditeur de VB6 ne l'accepte pas.
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 3 avril 2008 à 22:03
"...peut etre est ce possible d ecrire Dim Table(25,40) as Double directement..."
Le plus simple moyen de le savoir est d'essayer te de constater que ça marche.
"...Existe t il un moyen de creer un tableau multidiemensionnel dynamique lol?..."
Oui, selon les premières déclarations que tu indique et en utilisant l'instruction Redim
Mais attention sur de grands tableaux il se peut que VB6 ne compile pas. Tu peux avoir un message d'erreur à la compilation comme quoi la fonction est trop grande. Il n'en est rien mais c'est le redimentionnement du tableau dynamique qui prend toute la place.
---- Sevyc64 (alias Casy) ----# LE PARTAGE EST NOTRE FORCE #
cs_Gegeleblond
Messages postés41Date d'inscriptionlundi 31 mars 2008StatutMembreDernière intervention 2 août 2010 3 avril 2008 à 22:37
Merci pour ces renseignements
J ai bien evidemment essayer ce que j ai ecrit et j ai finalement conclu (peut etre a tort) que ecrire public pour Table ne sert a rien , j ai tt simplement ecrit dans (General) (Declaration)
Dim Table() As Double
et j ai redemensionne dans un autre module dans lequel je me sers de Table:
ReDim Table(NbProj, 64)
Et maintenant je n ai plus de message "Constant is required" mais je ne sais pas pourquoi.
Par ailleurs, ma variable Table n est toujours pas globale, ce qui m agace fortement car je sais que je vais forcement m en resservir dans un autre module. Saurais je un jour correctement declarer des variables?