Instruction ReDim

Utilisée au niveau de la procédure pour réaffecter l’espace de stockage des variables de tableau dynamique.

Syntaxe

ReDim [ Preserve ] varname ( subscripts ) [ As type ], [ varname ( subscripts ) [ As type ]] . . .

La syntaxe de l’instruction ReDim est composée des éléments suivants :

Argument Description
Preserve Facultatif. Mot clé utilisé pour conserver les données d'un tableau existant lorsque vous modifiez la taille de la dernière dimension.
varname Obligatoire. Nom de la variable ; respecte les conventions d'affectation des noms de variables standard.
subscripts Obligatoire. Dimensions d’une variable tableau ; jusqu'à 60 dimensions différentes peuvent être déclarées. L’argument subscripts utilise la syntaxe suivante :

[ lowerTo ] upper [ , [ lowerTo ] upper ] . . .

Lorsque pas explicitement indiqué dans lower, la limite inférieure d’une matrice est contrôlée par la déclaration Option Base. La limite inférieure correspond à zéro si aucune instruction Option Base n’est présente.
type Facultatif. Type de données de la variable ; peut être octets, booléenne, entier, Long, devise, Unique, Double, décimal (pas actuellement pris en charge), Date, chaîne (pour les chaînes de longueur variable), chaîne longueur (pour les chaînes de longueur fixe), objet, variante, un type défini par l’utilisateur, ou d’une type d’objet.

Utilisez une clause de type As distincte pour chaque variable définie. Pour une variante contenant une matrice, type décrit le type de chaque élément de la matrice, sans modifier la variante d’un autre type.

Remarques

L’instruction ReDim est utilisée pour dimensionner ou redimensionner un tableau dynamique qui a déjà été formellement déclaré à l’aide d’une instruction Private, Public, ou Dim avec des parenthèses vides (sans indice de dimension).

Utilisez l’instruction ReDim à plusieurs reprises pour modifier le nombre d’éléments et de dimensions dans un tableau. En revanche, il n'est pas possible de déclarer un tableau d'un type de données et d'utiliser plus tard l'instruction ReDim pour modifier le type de données du tableau, sauf si celui-ci est contenu dans une variable Variant. Si le tableau est contenu dans un Variant, le type des éléments peut être modifié à l’aide d’une clause de type As, sauf si vous utilisez le mot clé Preserve , auquel cas aucune modification du type de données n’est autorisée.

Si vous utilisez le mot clé Preserve, vous ne pouvez redimensionner que la dernière dimension du tableau, et vous ne pouvez pas du tout modifier le nombre de dimensions. Par exemple, si votre tableau n’a qu’une seule dimension, vous pouvez la redimensionner étant donné que c’est la dernière et unique dimension. En revanche, si votre tableau a au moins deux dimensions, vous pouvez modifier la taille de la dernière dimension uniquement, tout en conservant le contenu du tableau.

L’exemple suivant montre comment augmenter la taille de la dernière dimension d’un tableau dynamique sans effacer aucune des données qu’il contient.

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

De même, lorsque vous utilisez l’argument Preserve, vous pouvez changer la taille du tableau uniquement en modifiant sa limite supérieure ; la modification de sa limite inférieure génère une erreur.

Si vous apportez une matrice considérablement plus petite qu’elle ne l’était, les données dans les éléments supprimés seront perdues.

Lorsque les variables sont initialisées, une variable numérique est initialisée à 0, une chaîne de longueur variable est initialisée à une chaîne vide ("") et une chaîne de longueur fixe est remplie de zéros. Les variables de type Variant sont initialisées à la valeur Empty. Chaque élément d’une variable de type défini par l’utilisateur est initialisé comme s’il s’agissait d’une variable distincte.

Une variable qui fait référence à un objet doit être affectée à un objet existant à l’aide de l’instruction définir avant de pouvoir être utilisé. Jusqu'à ce qu’elle soit affectée à un objet, la variable objetdéclarée a la valeur spéciale rien, ce qui indique qu’elle ne fait pas référence à une instance précise d’un objet.

L’instruction ReDim agit comme une instruction déclarative si la variable qu’elle déclare n’existe pas au niveau module ou niveau de la procédure. Si une autre variable portant le même nom est créée par la suite, même si vous utilisez une plus large étendue, ReDim fera référence à la dernière variable et n’entraînera pas nécessairement d’erreur de compilation, même si Option Explicite est appliquée. Pour éviter ce type de conflit, n’utilisez pas ReDim en tant qu’instruction déclarative, mais uniquement pour redimensionner des tableaux.

Notes

Pour redimensionner un tableau contenu dans une variable Variant, vous devez déclarer explicitement la variable Variant avant de redimensionner le tableau

Exemple

Cet exemple utilise l’instruction ReDim pour affecter et réaffecter de l’espace de stockage à des variables de tableau dynamique. Elle suppose que la valeur de Option Base est 1.

Dim MyArray() As Integer ' Declare dynamic array. 
Redim MyArray(5) ' Allocate 5 elements. 
For I = 1 To 5 ' Loop 5 times. 
 MyArray(I) = I ' Initialize array. 
Next I 

L'instruction suivante redimensionne le tableau et efface les éléments.

Redim MyArray(10) ' Resize to 10 elements. 
For I = 1 To 10 ' Loop 10 times. 
 MyArray(I) = I ' Initialize array. 
Next I 

L’instruction suivante redimensionne le tableau sans effacer les éléments.

Redim Preserve MyArray(15) ' Resize to 15 elements. 

Voir aussi

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.