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 ) [ Astype ], [ varname ( subscripts ) [ Astype ]] . . .
La syntaxe de l’instruction ReDim est composée des éléments suivants :
Élément | 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 de tableau ; vous pouvez déclarer jusqu'à 60 dimensions. L’argument indices utilise la syntaxe suivante : [inférieurà] upper [ , [lowerTo] upper ] . . . . Lorsque pas explicitement indiqué dans lower, la limite inférieure d’une matrice est contrôlée par la déclarationOption Base. La limite inférieure correspond à zéro si aucune instructionOption Base n’est présente. |
type | Facultatif. Type de données de la variable ; Peut être Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (non pris en charge actuellement), Date, String (pour les chaînes de longueur variable), Stringlength (pour les chaînes de longueur fixe), Object, Variant, un type défini par l’utilisateur ou un type d’objet. Utiliser une clause distincteen tant quetype 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’instructionReDim 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. Toutefois, vous ne pouvez pas déclarer une matrice de type de données et utiliser plus tard ReDim pour modifier le tableau en un autre type de données, sauf si la matrice est contenue dans une variante. Si la matrice est contenue dans une variante, le type des éléments peut être modifié à l’aide d’une clauseen tant quetype, sauf si vous utilisez le mot cléconserver, dans ce cas, aucune modification du type de données n’est autorisée.
Si vous utilisez le mot cléconserver, vous pouvez redimensionner uniquement la dernière dimension du tableau et que vous ne pouvez pas modifier le nombre de dimensions du tout. 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’instructiondé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’instructionReDim 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.
Remarque
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.