Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA initialisation de tableaux dynamiques

laurene13

XLDnaute Nouveau
Bonjour,

J'ai un petit souci sur VBA et je m'en remets a vous.

Je cree un tableau dans mon code (ou plus exactement) une matrice, carree d'ordre N.

Comme N est variable je passe par un tableau dynamique.

Je declare mon tableau avec
Code:
Public matrice() as double

Et apres je redimensionne pour avoir les bonnes bornes
Code:
Redim preserve matrice(N,N)

Ca marche et tout mais mon souci est quand je fais tourner mon code deux fois en changeant la valeur de N entre les deux, j'ai un message d'erreur

"L'indice n'appartient pas a la selection."

J'arrete le debugger, je relance ca marche.
Que se passe-t-il ? Pb d'init de ma matrice ?

Que faire ?

Merci,
Bonne Soiree
Laurene.
 

Gael

XLDnaute Barbatruc
Re : VBA initialisation de tableaux dynamiques

Bonsoir Lorene13,

Attention, le redim preserve ne permet de changer que la dernière dimension du tableau.

Tu peux faire un redim sans preserve ou un redim preserve qui ne change que la dernière dimension, sinon tu auras un message d'erreur.

regarde l'aide à ce sujet en recherchant "Redim"

@+

Gael
 

laurene13

XLDnaute Nouveau
Re : VBA initialisation de tableaux dynamiques

En effet, j'avais vu ca, mais j'avais cru comprendre que la derniere dimension, c'etait les bornes superieures, a savoir mon coin en haut a droite.

Du coup, c'est quelle borne du tableau que l'on peut modifier ?
 

Gael

XLDnaute Barbatruc
Re : VBA initialisation de tableaux dynamiques

Re,

La dernière dimension, c'est celle définie en dernier dans l'instruction Redim:

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

mais on ne peut pas écrire:

Redim preserve X(15,15,15)

@+

Gael
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…