Comment corriger l’erreur VBA 9 (indice hors plage) ?

Indice hors plage (durée d’exécution : erreur 9)

L’erreur Subscript Out of Range (Run Time: Error 9) se produit lorsque vous faites référence à un objet ou essayez d’utiliser une variable dans un code qui n’existe pas dans le code, dans ce cas, VBA affichera cette erreur. Comme chaque code que vous écrivez est unique, la cause de l’erreur le serait.

indice hors plage

Dans l’exemple suivant, vous avez essayé d’activer la « Feuille1 » qui est un objet. Mais comme vous pouvez le voir dans le classeur, aucune feuille de calcul n’existe avec le nom « Sheet1 » (au lieu de cela, vous avez « Sheet2 »), donc VBA affiche « Subscript Out of Range » pour vous informer qu’il y a quelque chose qui ne va pas avec le code.

Indice hors limites

Il peut y avoir une autre situation où vous devez faire face à l’erreur « Subscript Out of Range Error » lorsque vous essayez de déclarer un tableau dynamique mais que vous oubliez d’utiliser les instructions DIM et ReDim pour redéfinir la longueur du tableau.

Maintenant, dans le code ci-dessus, vous avez un tableau avec le nom « myArray » et pour le rendre dynamique, nous avons initialement laissé la longueur du tableau vide. Mais avant d’ajouter un élément, vous devez redéfinir la longueur du tableau à l’aide de l’instruction ReDim.

Et c’est l’erreur que nous avons commise dans le code ci-dessus et VBA a renvoyé l’erreur « Script hors plage ».

Sub myMacro()
Dim myArray() As Variant
myArray(1) = "One"
End Sub

Comment réparer l’indice hors plage dans Excel ?

La meilleure façon de gérer cet indice hors plage est d’écrire des codes efficaces et de s’assurer de déboguer le code que vous avez écrit (étape par étape).

Lorsque vous exécutez un code étape par étape, il vous est facile de savoir sur quelle ligne de ce code vous avez une erreur car VBA vous montrera le message d’erreur pour l’erreur 9 et mettra cette ligne en surbrillance en jaune.

L’autre chose que vous pouvez faire est d’utiliser un « gestionnaire d’erreurs » pour accéder à une ligne d’erreur spécifique lorsqu’elle se produit.

Dans le code suivant, nous avons écrit une ligne pour activer la feuille mais avant cela, nous avons utilisé l’instruction goto pour passer au gestionnaire d’erreurs. Dans le gestionnaire d’erreurs, vous avez une boîte de message qui vous montre un message avec le Err. Description qu’une erreur s’est produite.

Ainsi, lorsque vous exécutez ce code et que « Sheet1 » n’est pas dans le classeur où vous essayez de l’activer. Il vous montrera une boîte de message comme ci-dessous.

Et si le « Sheet1 » est là, il n’y aura aucun message du tout.

Sub myMacro()

Dim wks As Worksheet

On Error GoTo myError
Sheets("Sheet1").Activate

myError:
MsgBox "There's an error in the code: " & Err.Description & _
". That means there's some problem with the sheet " & _
"that you want to activate"

End Sub

Ajouter un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *