Partage via


ReDim non valide

Certains tableaux ne peuvent pas être redimensionnés. Les causes et solutions de cette erreur sont les suivantes :

  • Une variable a déclaré implicitement un Variant, et vous avez tenté d'utiliser ReDim pour le transformer en tableau.

    Un Variant peut contenir un tableau, mais s'il n'est pas déclaré explicitement, vous ne pouvez pas utiliser ReDim pour le convertir en tableau. Déclarez le Variant avant d'utiliser ReDim pour spécifier le nombre d'éléments qu'il peut contenir. Par exemple, dans le code suivant, ReDim AVar(10) provoque une erreur ReDim non valide, mais ReDim BVar(10) pas :

AVar = 1    ' Implicit declaration of AVar. 
ReDim AVar(10)    ' Causes invalid ReDim error. 
'. 
'. 
'. 
Dim BVar    ' Explicit declaration of BVar. 
ReDim BVar(10)    ' No error. 
  • Vous avez tenté d'utiliser ReDim pour modifier plusieurs dimensions d'un tableau contenu dans un Variant. Vous ne pouvez utiliser que ReDim pour modifier la taille de la dernière dimension d'un tableau dans un Variant. Pour créer un tableau avec plusieurs dimensions pouvant être redimensionné, le tableau ne doit pas être contenu dans un Variant, et vous devez le déclarer de façon normale.

  • Utilisez ReDim uniquement pour modifier le nombre d’éléments d’un tableau normal, et non le type de ces éléments. Si vous souhaitez un tableau dans lequel vous pouvez modifier les types des éléments, utilisez un tableau contenu dans un Variant. Si vous déclarez d'abord le tableau, la modification des types des éléments et de leur nombre peut être effectuée comme suit :

Dim MyVar As Variant    ' Declare the variable. 
ReDim MyVar(10) As String    ' ReDim it as array of String subtypes. 
ReDim MyVar(20) As Integer    ' ReDim it as array of Integer subtypes. 
ReDim MyVar(5) As Variant    ' ReDim it as array of Variant subtypes. 

  • Vous avez tenté d'utiliser ReDim avec un tableau membre d'un objet Automation.

    Supprimez l'instruction ReDim.

    Note Si vous ne spécifiez pas de type pour une variable, la variable reçoit le type par défaut, Variant. Ce n’est pas toujours évident. Par exemple, le code suivant déclare deux variables ; la première, MyVar, est de type Variant, tandis que la seconde, AnotherVar, est de type Integer.

Dim MyVar, AnotherVar As Integer 

Pour plus d’informations, sélectionnez l’élément en question et appuyez sur F1 (sur Windows) ou AIDE (sur Macintosh).

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.