Share via


ReDim, instruction (Visual Basic)

Réalloue l'espace de stockage d'une variable tableau.

ReDim [ Preserve ] name(boundlist) [ ,  name(boundlist) [, ... ] ]

Composants

Terme

Définition

Preserve

Optionnel. Modificateur utilisé pour conserver les données du tableau existant lorsque vous changez la taille de la dernière dimension seulement.

name

Requis. Nom de la variable tableau. Consultez Noms d'éléments déclarés (Visual Basic).

boundlist

Requis. Liste des limites de chaque dimension du tableau redéfini.

Notes

Vous pouvez utiliser l'instruction ReDim pour changer la taille d'une ou plusieurs dimensions d'un tableau qui a déjà été déclaré. Si vous disposez d'un grand tableau et que certains de ses éléments ne sont plus nécessaires, ReDim peut libérer de la mémoire en réduisant la taille du tableau. En revanche, si le tableau a besoin de plus d'éléments, ReDim pouvez les ajouter.

L'instruction ReDim est destinée uniquement aux tableaux. Il n'est pas valide sur les amplitudes scalaires (variables qui contiennent uniquement une valeur unique), les collections, ou les structures. Notez que si vous déclarez une variable comme étant de type Array, l'instruction d' ReDim n'a pas d'informations de type suffisantes pour créer le tableau.

Vous pouvez utiliser ReDim seulement au niveau de la procédure. Par conséquent, le contexte de déclaration de la variable doit être une procédure ; il ne peut pas être un fichier source, espace de noms, une interface, une classe, une structure, un module, ou un bloc. Pour plus d'informations, consultez Contextes de déclaration et niveaux d'accès par défaut (Visual Basic).

Règles

  • Variables multiples. Vous pouvez redimensionner plusieurs variables tableau dans la même instruction de déclaration et spécifier les parties d' name et d' boundlist pour chaque variable. Les variables multiples sont séparées par des virgules.

  • Limites d'index de tableau. Chaque entrée dans boundlist peut spécifier les limites inférieures et supérieures de cette dimension. La limite inférieure est toujours 0 (zéro). La limite supérieure est la valeur d'index la plus élevée possible pour cette dimension, pas la longueur de la dimension (qui est la limite supérieure plus un). L'index pour chaque dimension varie de 0 à sa valeur liée supérieure.

    Le nombre de dimensions dans boundlist doit correspondre au nombre de dimensions (rang) du tableau.

  • Types de données. L'instruction d' ReDim ne peut pas modifier le type de données d'une variable tableau ou de ses éléments.

  • Initialisation. L'instruction ReDim ne peut pas fournir de nouvelles valeurs d'initialisation pour les éléments du tableau.

  • Rang. L'instruction ReDim ne peut pas changer le rang (nombre de dimensions) du tableau.

  • Redimensionnement avec conservation. Si vous utilisez Preserve, vous pouvez redimensionner uniquement la dernière dimension du tableau. Pour chaque autre dimension, vous devez spécifier la limite du tableau existant.

    Par exemple, si votre tableau ne comporte qu'une seule dimension, vous pouvez la modifier tout en conservant le contenu du tableau, car vous changez la dernière et seule dimension. Toutefois, si votre tableau comporte deux dimensions ou plus, vous pouvez changer la taille de la dernière dimension seulement si vous utilisez Preserve.

  • Propriétés. Vous pouvez utiliser ReDim sur une propriété qui contient un tableau de valeurs.

Comportement

  • Remplacement de tableau. ReDim libère le tableau existant et crée un nouveau tableau avec le même rang. Le nouveau tableau remplace le tableau libéré dans la variable tableau.

  • Initialisation sans conservation. Si vous ne spécifiez pas Preserve, ReDim initialise les éléments de la nouvelle tableau à l'aide de la valeur par défaut pour son type de données.

  • Initialisation avec conservation. Si vous spécifiez Preserve, Visual Basic copie les éléments du tableau existant vers la nouvelle tableau.

Exemple

L'exemple suivant augmente la taille de la dernière dimension d'un tableau dynamique sans perte de données existantes dans le tableau, puis réduit la taille avec une perte partielle de données. Enfin, il réduit la taille à sa valeur d'origine et réinitialise tous les éléments du tableau.

Dim intArray(10, 10, 10) As Integer 
ReDim Preserve intArray(10, 10, 20)
ReDim Preserve intArray(10, 10, 15)
ReDim intArray(10, 10, 10)

L'instruction d' Dim crée un tableau à trois dimensions. Chaque dimension est déclarée avec une limite de 10, donc l'index de tableau pour chaque dimension peut varier de 0 à 10. Dans la discussion suivante, les trois dimensions est connu sous le nom de la couche, de la ligne, et la colonne.

La première instruction ReDim crée un nouveau tableau qui remplace le tableau existant dans la variable intArray. ReDim copie tous les éléments du tableau existant dans le nouveau tableau. Elle ajoute également 10 colonnes supplémentaires à la fin de chaque ligne dans chaque couche et initialise les éléments de ces nouvelles colonnes à 0 (la valeur par défaut d' Integer, qui est le type d'élément du tableau).

Le deuxième ReDim crée une autre tableau et copie tous les éléments qui s'adaptent. Toutefois, cinq colonnes sont perdues à partir de la fin de chaque ligne de chaque couche. Cela n'est pas un problème si vous avez terminé d'utiliser ces colonnes. Réduire la taille d'un grand tableau peut libérer de la mémoire dont vous n'avez plus besoin.

Le troisième ReDim crée une autre tableau et encore cinq colonnes de la fin de chaque ligne dans chaque couche. Cette fois-ci, elle ne copie pas les éléments existants. Cette instruction retourne le tableau à sa taille d'origine. Étant donné que l'instruction n'inclut pas le modificateur d' Preserve, il affecte tous les éléments de tableau à leurs valeurs par défaut d'origine.

Pour obtenir d'autres exemples, consultez Tableaux dans Visual Basic.

Voir aussi

Référence

Const, instruction (Visual Basic)

Dim, instruction (Visual Basic)

Erase, instruction (Visual Basic)

Nothing (Visual Basic)

IndexOutOfRangeException

Autres ressources

Tableaux dans Visual Basic