Tableau dynamique de deux dimensions [Résolu]

cs_lecamer 9 Messages postés jeudi 29 novembre 2007Date d'inscription 31 juillet 2008 Dernière intervention - 31 juil. 2008 à 11:16 - Dernière réponse : cs_lecamer 9 Messages postés jeudi 29 novembre 2007Date d'inscription 31 juillet 2008 Dernière intervention
- 31 juil. 2008 à 15:34
Bonjour ,

ma question est la suivante.

peut on déclarer un tableau à deux dimensions accessible dans toute l'application (donc en global),et si oui comment.

j'ai essayé tout ce qui me vient en tête :
<!-- BEGIN TEMPLATE: bbcode_code -->
global tableau()() as string
global tableau(,)as string
global tableau(6,) as string  'en connaissant une dimension

<!-- END TEMPLATE: bbcode_code -->et tjrs une erreur.

Sur le net je vois rien de bons.

Avez vs une solution??

Merci d'avance
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
LIBRE_MAX 1403 Messages postés mardi 1 mai 2007Date d'inscription 7 octobre 2012 Dernière intervention - 31 juil. 2008 à 13:28
3
Merci
dans un moule je declare
   global tableau () as string

Un module MODULE ou le mdule du formulaire ?

tu vois ça et tu passes ton tableau à ta procédure captureval (), en paramètre et By Ref.
<hr />... Y'en a même qui disent qu'ils l'ont vu voler.

Merci LIBRE_MAX 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 83 internautes ce mois-ci

Commenter la réponse de LIBRE_MAX
cs_loulou69 672 Messages postés mercredi 22 janvier 2003Date d'inscription 2 juin 2016 Dernière intervention - 31 juil. 2008 à 11:25
0
Merci
Bonjour
Oui il faut bien déclarer une des deux dimensions dans la déclaration Global ou Public dans un module
Et dès que l'on a besoin de remplir le tableau étendre ce dernier en demandant de conserver les données déjà enregistré avec Preserve, soit :
Redim Preserve tableau(6,i+1) si i est la dimension précedente
Commenter la réponse de cs_loulou69
cs_lecamer 9 Messages postés jeudi 29 novembre 2007Date d'inscription 31 juillet 2008 Dernière intervention - 31 juil. 2008 à 11:30
0
Merci
C'est exactement ce que je fais,mais en fait,j' ai une erreur de compilation lorsque je tape ceci :
  global tableau(6,) as string
il me dit , attendu:expression
je comprends pas
Commenter la réponse de cs_lecamer
LIBRE_MAX 1403 Messages postés mardi 1 mai 2007Date d'inscription 7 octobre 2012 Dernière intervention - 31 juil. 2008 à 11:53
0
Merci
Salut,
-Déclaration
global tableau()as string
on ne spécifie pas la dimention ni la taille.
Sinon on ne pourra plus le redimensionner après.

-Redimentionner
Redim Preserve Redim Preserve tableau(6,4)
<Traitement>
Redim Preserve Redim Preserve tableau(22,4)
<Traitement>
Redim Preserve Redim Preserve tableau(11,4)
<Traitement>
etc...

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Commenter la réponse de LIBRE_MAX
LIBRE_MAX 1403 Messages postés mardi 1 mai 2007Date d'inscription 7 octobre 2012 Dernière intervention - 31 juil. 2008 à 11:54
0
Merci
oups !
Redim Preserve tableau(6,4)
...
un malheureux copiercoller

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Commenter la réponse de LIBRE_MAX
LIBRE_MAX 1403 Messages postés mardi 1 mai 2007Date d'inscription 7 octobre 2012 Dernière intervention - 31 juil. 2008 à 12:31
0
Merci
c' est beaucoup plus compliqué que je ne le pensait !
En fait Preserve ne fnctionne que sur le 2 ieme indice


Option Explicit
Dim global_tableau() As String


Private Sub Form_Load()
    'dimension de départ
   ReDim global_tableau(10, 4)
End Sub


Private Sub Command1_Click()
    ReDim Preserve global_tableau(10, 5)
   'marche
   'alors que
  'ReDim Preserve global_tableau(11, 4)
  
  ' provoque une erreur


 'mais
  'ReDim global_tableau(11, 4)
 'ou
  'ReDim global_tableau(12, 5)
  'pas d" erreur mais les données sont perdues


End Sub








 





<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Commenter la réponse de LIBRE_MAX
cs_loulou69 672 Messages postés mercredi 22 janvier 2003Date d'inscription 2 juin 2016 Dernière intervention - 31 juil. 2008 à 12:32
0
Merci
global tableau() as string
tout simplement
Commenter la réponse de cs_loulou69
LIBRE_MAX 1403 Messages postés mardi 1 mai 2007Date d'inscription 7 octobre 2012 Dernière intervention - 31 juil. 2008 à 12:49
0
Merci
on parle de dynamisme là !
La question de la déclaration étant résolue, fais:
   ReDim Preserve global_tableau(10, 4)


 puis
  ReDim Preserve global_tableau(11, 4)

Pour un tableau à une dimension,  
ReDim Preserve global_tableau(10)


 puis
  ReDim Preserve global_tableau(11)
ça passe.

Mais pour un Muliti ça coince.





<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Commenter la réponse de LIBRE_MAX
cs_lecamer 9 Messages postés jeudi 29 novembre 2007Date d'inscription 31 juillet 2008 Dernière intervention - 31 juil. 2008 à 13:15
0
Merci
effectivement ce que je fais c'est :
dans un moule je declare
   global tableau () as string
ensuite  dans une fonction j'ai
 private sub sauve_click()
   redim preserve tableau (5,2)
   .....' je peux utiliser "tableau" ici et modifier la taille du 2ème indice à volonté et ss pb
jusqu' à là ok
Mais dès que j'appelle par exemple sub captureval (), dans laquelle je veux utiliser les données de "tableau"=>impossible
je n'ai plus de données.
Initialement je pensais qu'ayant déclaré "tableau" en global,tout se passerait bien,mais non.
C'est pourquoi je cherchais la possibilité de déclarer en global un tableau dynamique.
Je pênse que ce qui se passe c'est que dans mon cas, redim preserve tableau (5,2) se faisant dans la fonction sauve_click,"tableau" est considéré comme étant une déclaration locale,malgré le  global tableau () as string.
Donc le problème est identifié,mais la solution n'est toujours pas trouvé
Commenter la réponse de cs_lecamer
LIBRE_MAX 1403 Messages postés mardi 1 mai 2007Date d'inscription 7 octobre 2012 Dernière intervention - 31 juil. 2008 à 13:59
0
Merci
'module du formulaire
Option Explicit
Dim tableau() As String


Private Sub sauve_click()
    ReDim Preserve tableau(10, 4)
    tableau(1, 1) = "A"
    CAPTURE
     'résultat "A"
End Sub


Private Sub CAPTURE()
   MsgBox tableau(1, 1)
End Sub


'si ta sub CAPTURE est quelque part dans un autre 'module il faut que
'-le tableau soit Public et donc déclaré dans un module 'géneral
'-ta sub CAPTURE soit Public déclarée elle aussi dans un 'module general.


'module du formulaire
Option Explicit
<strike>Dim tableau() As String</strike>


Private Sub Command1_Click()
    ReDim Preserve tableau(10, 4)
    tableau(1, 1) = "A"
    CAPTURE
     'résultat "A"
End Sub



<strike>Private Sub CAPTURE()
</strike>   <strike>MsgBox tableau(1, 1)
End Sub</strike>


'module general donc


Option Explicit
Public tableau() As String


Public Sub CAPTURE()
   MsgBox tableau(1, 1)
End Sub


'j' y arrive sans passage de paramètre.


 





<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
Commenter la réponse de LIBRE_MAX
cs_lecamer 9 Messages postés jeudi 29 novembre 2007Date d'inscription 31 juillet 2008 Dernière intervention - 31 juil. 2008 à 14:41
0
Merci
ok,merci pour l'aide, je vais essayer tout ceci tout de suite.
Commenter la réponse de cs_lecamer
cs_lecamer 9 Messages postés jeudi 29 novembre 2007Date d'inscription 31 juillet 2008 Dernière intervention - 31 juil. 2008 à 15:34
0
Merci
j' ai fais le passage en paramètre,ca m'a obligé à changer la signature de la fonction,ce que je ne voulais pas initialement,mais en tout cas ca marche.
Merci pour votre aide et merci si a libre_max pour la solution proposée et qui marche.
Commenter la réponse de cs_lecamer

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.