Table of contents
TOC
Réduire la table des matières
Développer la table des matières

ReDim, instruction

office 365 dev account|Dernière mise à jour: 04/10/2017
|
1 Contributeur

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émentDescription
PreserveFacultatif. Mot clé utilisé pour conserver les données d'un tableau existant lorsque vous modifiez la taille de la dernière dimension.
varnameObligatoire. Nom de la variable ; respecte les conventions d'affectation des noms de variables standard.
subscriptsObligatoire. Dimensions d'une variable de tableau ; vous pouvez déclarer jusqu'à 60 dimensions. L' argument subscripts utilise la syntaxe suivante : [ lowerTo ] upper [ , [ lowerTo ] upper ] . . . Si elle n'est pas indiquée explicitement dans l'argument lower , la limite inférieure d'un tableau est contrôlée par l'instruction OptionBase. La limite inférieure a la valeur zéro si aucune instruction OptionBase n'est présente.
typeFacultatif. Type de données de la variable ; peut être Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (actuellement non pris en charge), Date, String (pour les chaînes de longueur variable), String * length (pour les chaînes de longueur fixe), Object, Variant, un type défini par l'utilisateur ou un type d'objet. Utilisez une clause Astype distincte pour chaque variable à définir. Pour une valeur de type Variant contenant un tableau, l'argument type décrit le type de chaque élément du tableau, mais ne change pas le type Variant par un autre type.

Notes

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).

Utilisée de manière répétée, l'instruction ReDim permet de modifier le nombre d'éléments et de dimensions d'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 une variable Variant, vous pouvez modifier le type des éléments à l'aide de la clause Astype , à moins que vous n'utilisiez le mot clé Preserve, auquel cas aucune modification de 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 réduisez la taille d'un tableau, les données figurant dans les éléments supprimés seront perdues. Si vous transmettez un tableau à une procédure par référence, vous ne pourrez pas redimensionner le tableau au sein de la procédure.

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 se rapporte à un objet doit être affectée à un objet existant à l'aide de l'instruction Set avant d'être utilisée. Tant qu'elle n'est pas affectée à un objet, la variable d'objet déclarée a la valeur spéciale Nothing, qui indique qu'elle ne se rapporte à aucune instance particulière d'un objet.

L'instruction ReDim joue le rôle d'instruction déclarative si la variable qu'elle déclare n'existe ni au niveau du module ni au niveau de la procédure. Si une autre variable portant le même nom est créée ultérieurement, même dans une étendue plus large, ReDim se rapportera à cette dernière variable et ne générera pas nécessairement une erreur de compilation, même si l'instruction Option Explicit 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.
© 2018 Microsoft