ReDim, instruction (Visual Basic)

Mise à jour : novembre 2007

Réaffecte l'espace de stockage pour une variable tableau.

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

Éléments

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

  • name
    Obligatoire. Nom de la variable tableau. Consultez Noms d'éléments déclarés.

  • boundlist
    Obligatoire. 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 votre code détermine qu'un tableau doit contenir plus d'éléments, ReDim peut les ajouter.

L'instruction ReDim est destinée uniquement aux tableaux. Elle n'est pas valide pour les fonctions scalaires (variables contenant uniquement une seule valeur), les collections ou les structures. Notez que si vous déclarez une variable comme étant de type Array, l'instruction ReDim ne dispose pas d'informations de type suffisantes pour créer le nouveau tableau.

Vous pouvez utiliser ReDim seulement au niveau de la procédure. Cela signifie que le contexte de déclaration pour une variable doit être une procédure, et ne peut pas être un fichier source, un 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.

Règles

  • Modificateurs. Vous pouvez spécifier uniquement le modificateur Preserve, et vous ne pouvez pas omettre le mot clé ReDim dans ce cas.

  • Variables multiples. Vous pouvez redimensionner plusieurs variables tableau dans la même instruction de déclaration, en spécifiant les éléments name et boundlist pour chacune d'elles. Les variables multiples sont séparées par des virgules.

  • Limites 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 zéro, que vous la spécifiez ou pas. La limite supérieure est la valeur la plus élevée possible pour cet indice, et non la longueur de la dimension (qui représente la limite supérieure plus un). Chaque indice peut être compris entre zéro et sa valeur de limite supérieure.

    Le nombre de dimensions de boundlist doit correspondre au rang d'origine du tableau.

  • Tableaux vides. Il est possible d'utiliser la valeur -1 pour déclarer la limite supérieure d'une dimension d'un tableau. Cela signifie que le tableau est vide, mais pas Nothing (Visual Basic). Pour plus d'informations, consultez Comment : créer un tableau sans éléments. Toutefois, le code Visual Basic ne peut pas accéder à un tel tableau. Si vous tentez d'y accéder, une erreur IndexOutOfRangeException se produit lors de l'exécution.

  • Types de données. L'instruction 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 seulement la dernière dimension du tableau. Pour toutes les autres dimensions, vous devez spécifier la même limite que dans le 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 du nouveau tableau sur la valeur par défaut de leur type de données.

  • Initialisation avec conservation. Si vous spécifiez le modificateur Preserve, Visual Basic copie les éléments à partir du tableau existant dans le nouveau 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)

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 autres colonnes à la fin de chaque ligne dans chaque couche et initialise les éléments contenus dans ces nouvelles colonnes sur 0 (la valeur par défaut de Integer, le type d'élément du tableau).

La deuxième instruction ReDim crée un autre nouveau tableau en copiant tous les éléments qui coïncident. 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.

La troisième instruction ReDim crée toujours un autre nouveau tableau, en supprimant cinq autres colonnes de la fin de chaque ligne dans chaque couche. Cette fois-ci, elle ne copie pas les éléments existants. Cela permet de rétablir le tableau à sa taille d'origine et de retourner tous ses éléments à leur valeur d'origine par défaut.

Voir aussi

Tâches

Comment : créer un tableau sans éléments

Concepts

Instruction ReDim pour les utilisateurs de Visual Basic 6.0

Déclaration de la taille des tableaux pour les utilisateurs de Visual Basic 6.0

Référence

Const, instruction (Visual Basic)

Dim, instruction (Visual Basic)

Erase, instruction (Visual Basic)

Nothing (Visual Basic)

IndexOutOfRangeException