Erreur 9 utilisant ReDim Preserve

Cette fonction renvoie une erreur 9, pourquoi? J'ai déjà lu quelques questions similaires ici mais rien ne m'a vraiment bien expliqué.

J'essaie vraiment de comprendre pourquoi ReDim Preserve ne fonctionne pas dans ce cas car à partir de "j + 1" aucune input n'est input (j'ai déjà vérifié mes cellules), il ne s'agit pas d'écraser rien.

Heres le code

Function DadosAnoIndenizações() ReDim dados(1 To 10000, 1 To 2) j = 0 For i = 5 To 10000 If (IsNumeric(Worksheets(2).Cells(i, 8).Value) And Not IsEmpty(Worksheets(2).Cells(i, 8).Value)) Then Ano = CInt(Right(Worksheets(2).Cells(i, 8).Value, 4)) SD = Worksheets(2).Cells(i, 11).Value j = j + 1 dados(j, 1) = Ano dados(j, 2) = SD End If Next i ReDim Preserve dados(1 To j, 1 To 2) DadosAnoIndenizações = dados End Function 

Merci pour toute aide, les gars

Vous essayez de modifier la première dimension du tableau. Redim preserve ne peut modifier la dernière dimension du tableau, c'est pourquoi vous obtenez l'erreur. Vous pouvez find cette information dans le site Web de MSDN: ReDim Statement (Visual Basic) , en particulier la section "Redimensionnement avec préserve":

  • Redimensionner avec Preserve. Si vous utilisez Preserve , vous pouvez resize 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 n'a qu'une seule dimension, vous pouvez resize cette dimension et conserver tout le contenu du tableau, car vous modifiez la dernière et la seule dimension. Toutefois, si votre tableau a deux ou plusieurs dimensions, vous pouvez modifier la taille de la seule dernière dimension si vous utilisez Preserve .

En règle générale, la façon dont il est nécessaire d'avoir la première dimension soit votre 1 to 2 et la deuxième dimension soit votre 1 to j et ensuite faire une Application.Transpose lors de l'écriture des résultats dans la feuille de calcul.