Tableau dynamique de deux dimensions

Résolu
cs_lecamer Messages postés 9 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 31 juillet 2008 - 31 juil. 2008 à 11:16
cs_lecamer Messages postés 9 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 31 juillet 2008 - 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

12 réponses

LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
31 juil. 2008 à 13:28
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.
3
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
31 juil. 2008 à 11:25
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
0
cs_lecamer Messages postés 9 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 31 juillet 2008
31 juil. 2008 à 11:30
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
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
31 juil. 2008 à 11:53
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.
0

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

Posez votre question
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
31 juil. 2008 à 11:54
oups !
Redim Preserve tableau(6,4)
...
un malheureux copiercoller

<hr />... Y'en a même qui disent qu'ils l'ont vu voler.
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
31 juil. 2008 à 12:31
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.
0
cs_loulou69 Messages postés 672 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 2 juin 2016 1
31 juil. 2008 à 12:32
global tableau() as string
tout simplement
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
31 juil. 2008 à 12:49
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.
0
cs_lecamer Messages postés 9 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 31 juillet 2008
31 juil. 2008 à 13:15
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é
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
31 juil. 2008 à 13:59
'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.
0
cs_lecamer Messages postés 9 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 31 juillet 2008
31 juil. 2008 à 14:41
ok,merci pour l'aide, je vais essayer tout ceci tout de suite.
0
cs_lecamer Messages postés 9 Date d'inscription jeudi 29 novembre 2007 Statut Membre Dernière intervention 31 juillet 2008
31 juil. 2008 à 15:34
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.
0
Rejoignez-nous