[VB6] Tableau multidimensionnel en variable globale en VB6 [Résolu]

cs_Gegeleblond
Messages postés
41
Date d'inscription
lundi 31 mars 2008
Dernière intervention
2 août 2010
- 3 avril 2008 à 21:17 - Dernière réponse : cs_Gegeleblond
Messages postés
41
Date d'inscription
lundi 31 mars 2008
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
Afficher la suite 

Votre réponse

7 réponses

Meilleure réponse
cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
- 3 avril 2008 à 23:20
3
Merci
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

Merci cs_MPi 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de cs_MPi
Meilleure réponse
cs_Jack
Messages postés
14010
Date d'inscription
samedi 29 décembre 2001
Dernière intervention
28 août 2015
- 4 avril 2008 à 00:50
3
Merci
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)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de cs_Jack
Meilleure réponse
pile_poil
Messages postés
682
Date d'inscription
vendredi 6 avril 2007
Dernière intervention
4 août 2012
- 4 avril 2008 à 09:36
3
Merci
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 :)

Merci pile_poil 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de pile_poil
Meilleure réponse
cs_lermite222
Messages postés
500
Date d'inscription
jeudi 5 avril 2007
Dernière intervention
2 juillet 2012
- 4 avril 2008 à 13:42
3
Merci
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+

Merci cs_lermite222 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 94 internautes ce mois-ci

Commenter la réponse de cs_lermite222
cs_casy
Messages postés
7745
Date d'inscription
mercredi 1 septembre 2004
Dernière intervention
24 septembre 2014
- 3 avril 2008 à 22:03
0
Merci
"...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 #   
Commenter la réponse de cs_casy
cs_Gegeleblond
Messages postés
41
Date d'inscription
lundi 31 mars 2008
Dernière intervention
2 août 2010
- 3 avril 2008 à 22:37
0
Merci
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?
Commenter la réponse de cs_Gegeleblond
cs_Gegeleblond
Messages postés
41
Date d'inscription
lundi 31 mars 2008
Dernière intervention
2 août 2010
- 4 avril 2008 à 19:33
0
Merci
Merci a tous votre aide!

Je pense que mon probleme est resolu...

A bientot
Gegeleblond
Commenter la réponse de cs_Gegeleblond

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.