Comment corriger l’erreur Excel VBA “Subscript Out of Range” (Runtime Error 9) ?
Résumé: l'erreur d'exécution 9 dans Excel se produit généralement lorsque vous utilisez différents objets dans un code ou que l'objet que vous essayez d'utiliser n'est pas défini. Cet article aborde les raisons de l'erreur Excel VBA "Subscript out of Range" et les solutions pour résoudre le problème. Il mentionnera également un outil de réparation Excel qui peut aider à réparer l'erreur si elle se produit en raison d'une corruption dans la feuille de calcul.
De nombreux utilisateurs ont signalé avoir rencontré l’erreur “Subscript out of range” (erreur d’exécution 9) lors de l’utilisation d’un code VBA dans Excel. Cette erreur se produit souvent lorsque l’objet auquel vous faites référence dans un code n’est pas disponible, qu’il a été supprimé ou qu’il n’a pas été défini auparavant. Elle se produit parfois lorsque vous avez déclaré un tableau dans le code, mais que vous avez oublié de spécifier l’instruction DIM ou ReDIM pour définir la longueur du tableau.
Causes de l’erreur d’exécution VBA 9 : Indice hors plage
L’erreur ‘Subscript out of range’ dans Excel peut se produire pour plusieurs raisons, comme par exemple :
- L’objet que vous essayez d’utiliser dans le code VBA n’a pas été défini auparavant ou a été supprimé.
- La syntaxe de déclaration du tableau est erronée.
- Mauvaise orthographe du nom de la variable.
- Référence à un mauvais élément de tableau.
- Nom incorrect de la feuille de calcul à laquelle vous essayez de vous référer.
- La feuille de calcul que vous essayez d’appeler dans le code n’est pas disponible.
- Un élément non valide a été spécifié.
- Non spécifié le nombre d’éléments d’un tableau.
- Le classeur dans lequel vous essayez d’utiliser VBA est corrompu.
Méthodes pour corriger l’erreur Excel VBA “Indice hors plage”.
Voici quelques solutions de contournement que vous pouvez essayer pour résoudre l’erreur d’exécution 9 dans Excel.
Méthode 1 : Vérifier le nom de la feuille de calcul dans le code
Parfois, Excel génère l’erreur d’exécution 9 : Subscript out of range si le nom de la feuille de calcul n’est pas défini correctement dans le code. Par exemple – Lorsque vous essayez de copier le contenu d’une feuille Excel (emp) vers une autre feuille (emp2) via le code VBA, vous avez mentionné par erreur un nom erroné pour la feuille de calcul (voir le code ci-dessous).
Private Sub CommandButton1_Click() Worksheets(“emp”).Range(“A1:E5”).Select Selection.Copy Worksheets(“emp3”).Activate Worksheets(“emp3”).Range(“A1:E5”).Select ActiveSheet.Paste Application.CutCopyMode = False End Sub |
Lorsque vous exécutez le code ci-dessus, Excel génère une erreur “Subscript out of range”.
Vérifiez donc le nom de la feuille de calcul et corrigez-le. Voici la marche à suivre :
- Allez dans l’onglet Design de la section Developer.
- Double-cliquez sur le bouton Commande.
- Vérifiez et modifiez le nom de la feuille de calcul (par exemple de “emp” à “emp2”).
- Exécutez maintenant le code.
- Le contenu de la feuille de calcul “emp” sera copié dans “emp2” (voir ci-dessous).
Méthode 2 : Vérifier la portée du tableau
L’erreur VBA “Subscript out of range” se produit également si vous avez déclaré un tableau dans un code mais que vous n’avez pas spécifié le nombre d’éléments. Par exemple, si vous avez déclaré un tableau et oublié de déclarer la variable tableau avec des éléments, vous obtiendrez l’erreur (voir ci-dessous) :
Pour remédier à ce problème, spécifiez la variable tableau :
Sub FillArray() Dim curExpense(364) As Currency Dim intI As Integer For intI = 0 to 364 curExpense(intI) = 20 Next End Sub |
Méthode 3 : Modifier les paramètres de sécurité des macros
L’erreur d’exécution 9 : Subscript out of range peut également se produire en cas de problème avec les macros ou si les macros sont désactivées dans les paramètres de sécurité des macros. Dans ce cas, vous pouvez vérifier et modifier les paramètres des macros. Procédez comme suit :
- Ouvrez votre Microsoft Excel.
- Accédez à Fichier > Options > Centre de confiance.
- Sous Trust Center, sélectionnez Paramètres du Trust Center.
- Cliquez sur Paramètres des macros, sélectionnez Activer toutes les macros, puis cliquez sur OK.
Méthode 4 : Réparer votre fichier Excel
Le nom ou le format du fichier Excel ou le nom des objets peut être modifié en raison d’une corruption du fichier. Lorsque les objets ne sont pas identifiés dans un code VBA, vous pouvez rencontrer l’erreur Subscript out of range. Vous pouvez utiliser l’utilitaire Ouvrir et réparer dans Excel pour réparer le fichier corrompu. Pour utiliser cet utilitaire, suivez les étapes suivantes :
- Dans MS Excel, cliquez sur Fichier > Ouvrir.
- Naviguez jusqu’à l’emplacement où le fichier concerné est stocké.
- Dans la boîte de dialogue Ouvrir, sélectionnez le classeur corrompu.
- Dans le menu déroulant Ouvrir, cliquez sur Ouvrir et réparer.
- Une invite vous demande de réparer le fichier ou d’en extraire les données.
- Cliquez sur l’option Réparer pour extraire les données autant que possible. Si le bouton Réparer échoue, cliquez sur le bouton Extraire pour récupérer les données sans les formules et les valeurs.
Si l’utilitaire ” Ouvrir et Réparer ” ne parvient pas à réparer le fichier Excel corrompu/endommagé, essayez un outil de réparation Excel avancé, tel que Stellar Repair for Excel. Il peut facilement réparer un classeur Excel gravement endommagé et récupérer tous les éléments, y compris les macros, les commentaires de cellules, les tableaux, les graphiques, etc. avec une intégrité de 100 %. L’outil est compatible avec toutes les versions de Microsoft Excel.
Conclusion
Vous pouvez rencontrer l’erreur “Subscript out of range” lors de l’utilisation de VBA dans Excel. Vous pouvez suivre les solutions de contournement présentées dans ce blog pour corriger l’erreur. Si le fichier Excel est corrompu, vous pouvez utiliser Stellar Repair for Excel pour réparer le fichier. Il s’agit d’un logiciel puissant qui peut aider à résoudre tous les problèmes dus à la corruption du fichier Excel. Il permet de récupérer toutes les données des fichiers Excel corrompus (.xls, .xlsx, .xltm, .xltx et .xlsm) sans modifier le formatage d’origine. L’outil prend en charge Excel 2021, 2019, 2016 et les versions antérieures.