[VB6] Tableau multidimensionnel en variable globale en VB6

Résolu
cs_Gegeleblond Messages postés 41 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 2 août 2010 - 3 avril 2008 à 21:17
cs_Gegeleblond Messages postés 41 Date d'inscription lundi 31 mars 2008 Statut Membre Derniè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.

Merci d avance
Gegeleblond

7 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
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
3
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
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)
3
pile_poil Messages postés 682 Date d'inscription vendredi 6 avril 2007 Statut Membre Dernière intervention 4 août 2012 6
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 :)
3
cs_lermite222 Messages postés 492 Date d'inscription jeudi 5 avril 2007 Statut Membre Dernière intervention 2 juillet 2012 4
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+
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
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 #   
0
cs_Gegeleblond Messages postés 41 Date d'inscription lundi 31 mars 2008 Statut Membre Derniè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?
0
cs_Gegeleblond Messages postés 41 Date d'inscription lundi 31 mars 2008 Statut Membre Dernière intervention 2 août 2010
4 avril 2008 à 19:33
Merci a tous votre aide!

Je pense que mon probleme est resolu...

A bientot
Gegeleblond
0
Rejoignez-nous