Declaration d'une matrice

galldup Messages postés 90 Date d'inscription vendredi 18 octobre 2002 Statut Membre Dernière intervention 27 décembre 2004 - 6 nov. 2003 à 18:48
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 7 nov. 2003 à 07:12
Bonjour !

Mon code se comporte en deux etapes : la premiere pour calculer le nombre de lignes que je desire allouer a ma matrice, puis la declaration de cette matrice...

/////traitement pour connaitre le nombre de ligne/////
...
i=23

////declaration de la matrice/////

Const NbrLines = i
Const NbrColumns = 16
Dim Data(NbrLines, NbrColumns) As Integer

Ca marche pas; il me met "erreur de compilation, constante requise"

Comprend pas :+(
Pouvez vous m'aider à enlever les cailloux dans mes chaussures ?

7 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
6 nov. 2003 à 19:51
Ca vient du Const NbrLines = i ?

Si oui, c'est normal car du déclare une constante en l'initialisant avec une valeur qui varie...

DarK Sidious

[Responsable de la rubrique API et responsable VB du site www.ProgOtoP.com]
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 nov. 2003 à 19:52
Effectivement, ton nombre de lignes n'est pas une constante...

il faut dimensionner ton tableau dynamiquement :

    Dim Data() as integer

    Private Sub Form_Load()
         redim Data ( 23  ,  16)
    End Sub

By Renfield

[mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 nov. 2003 à 19:54
DarkSidious , j'aime bien ta petite touche d'ironie....

a noter que tu peux demander a conserver les données de ton tableau, quant tu le redimensionne.

il faut faire :

   redim preserve Data ( 5 , 3)


By Renfield

[mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
6 nov. 2003 à 23:43
... mais qu'on ne peut changer que la DERNIÈRE dimension !
ce qui fait que, en commençant par :

Dim NbrLines As Integer
NbrLines = 12 'par exemple
Const NbrColumns = 16
Dim Data(NbrLines, NbrColumns) As Integer

tu pourras écrire :

Redim [Preserve] Data(12, 8) ' Preserve optionnel cf Renfield

mais pas

Redim Data(10, 16)

ni

Redim Data(10, 11)
0

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

Posez votre question
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
6 nov. 2003 à 23:48
Et pourquoi ??

Et pourquoi ne pourrais - t'on pas redimensionner notre matrice comme bon nous semble ??

j'ai tésté (intrigué) , VB ne m'as strictement rien dis...

d'autre part, si tu fait :

Dim Data(NbrLines, NbrColumns) As Integer


tu ne pourra de toute facon redimensionner ton tableau !!

Non, vraiment, je ne vois pas ce don tu me parles...

By Renfield

[mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
0
cs_rene38 Messages postés 1858 Date d'inscription samedi 29 juin 2002 Statut Membre Dernière intervention 17 octobre 2013 11
7 nov. 2003 à 03:59
Si vous utilisez le mot clé Preserve, vous ne pouvez redimensionner que la dernière dimension du tableau. Vous ne pouvez en aucun cas modifier le nombre de dimensions. Par exemple, si votre tableau n'a qu'une dimension, vous pouvez la modifier puisqu'il s'agit de la dernière et seule dimension. Toutefois, si le tableau compte plusieurs dimensions, seule la taille de la dernière dimension est modifiable si vous souhaitez préserver le contenu du tableau. L'exemple suivant montre comment augmenter la taille de la dernière dimension d'un tableau dynamique sans effacer les données qu'il contient :

ReDim X(10, 10, 10)
. . .
ReDim Preserve X(10, 10, 15)

MSDN DIXIT
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
7 nov. 2003 à 07:12
A oui d'accord, ca coince si tu met Preserve.....

en même temps je trouves ca normal !!! pour reaffecter les données aux bons indices, il s'amuserait !!

pardon pour ma reaction :-(

By Renfield

[mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
0
Rejoignez-nous