Symptômes
Lorsque vous utilisez la propriété location ou l' emplacement. adresse des sauts de page horizontaux ou horizontaux dans une macro Microsoft Visual Basic pour applications, le message d’erreur suivant peut apparaître :
Erreur au moment de l’exécution « 9 » : indice hors plage
Cause
Ce problème se produit lorsque les conditions suivantes sont remplies :
-
La cellule active se trouve au-dessus du saut de page horizontal ou à gauche du saut de page vertical qui est référencé par l’index HPageBreaks ou VPageBreaks .
-
L’emplacement du saut de page vertical ou horizontal est en dehors de l’écran à droite de la fenêtre visible ou sous la fenêtre visible du classeur.
-
Vous utilisez une macro Visual Basic pour applications dans Microsoft Excel de la même façon que le code suivant :
Sub TestHorizontal() ActiveSheet.Range("CZ1000").Value = 1 MsgBox ActiveSheet.HPageBreaks.Count MsgBox ActiveSheet.HPageBreaks(1).Location.Address MsgBox ActiveSheet.HPageBreaks(2).Location.AddressEnd Sub Sub TestVertical() ActiveSheet.Range("CZ1000").Value = 1 MsgBox ActiveSheet.VPageBreaks.Count MsgBox ActiveSheet.VPageBreaks(1).Location.Address MsgBox ActiveSheet.VPageBreaks(2).Location.Address MsgBox ActiveSheet.VPageBreaks(3).Location.AddressEnd Sub
Solution de contournement
Microsoft fournit des exemples de programmation uniquement à des fins d’illustration, sans garantie, expresse ou implicite. Cela comprend, sans s’y limiter, les garanties implicites en matière de qualité marchande ou d’adéquation à un but particulier. Cet article part du principe que vous êtes familiarisé avec le langage de programmation présenté et avec les outils utilisés pour créer et déboguer des procédures. Les ingénieurs du support Microsoft peuvent vous aider à expliquer les fonctionnalités d’une procédure particulière, mais ils ne modifieront pas ces exemples pour fournir des fonctionnalités ajoutées ou des procédures de construction adaptées à vos besoins spécifiques. Pour éviter ce problème, ajoutez du code pour sélectionner la dernière cellule utilisée dans la feuille de calcul avant que le code n’utilise la propriété location des sauts de page horizontaux ou verticaux. Par exemple, utilisez le code suivant pour sélectionner la cellule end, utiliser la propriété location , puis resélectionner la cellule active d’origine :
Sub CheckPageBreaks() 'Set object "currcell" equal to active cell. Set currcell = ActiveCell 'Select the last cell on the worksheet that has data. Range("IV65536").Select 'Include code with Location property here. x = ActiveSheet.HPageBreaks(2).Location.Address MsgBox x 'Example sets x equal to address of second horizontal page break. 'Then message box displays the address of the page break. 'Select original active cell. currcell.SelectEnd Sub
Une fois la propriété location calculée, vous pouvez sélectionner de nouveau la cellule active d’origine. Si vous utilisez du code pour faire défiler entre la première et la dernière cellule, ou sélectionner la dernière cellule et resélectionner immédiatement la cellule de début, l’erreur est susceptible de se produire. L’écran doit redessiner et la propriété location doit être calculée pour que la solution de contournement soit effective. Si vous utilisez le code ci-dessus avec
Application.ScreenUpdating = False
pour éviter le rafraîchissement de l’écran, le problème persiste.
Statut
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.
Informations supplémentaires
Si vous utilisez la méthode Count avec la propriété VPageBreaks ou HPageBreaks , il est possible que vous receviez le résultat zéro. Ce problème survient dans les conditions répertoriées dans la section « cause ». S’il s’agit d’un saut de page, la méthode de comptage peut donner la réponse correcte. La méthode de comptage des sauts de page horizontaux ou horizontaux peut donner le résultat attendu si un saut de page se trouve à proximité de la partie visible de la fenêtre de classeur. La solution de contournement fournie précédemment peut être utilisée pour obtenir le nombre attendu. Les sauts de page situés à droite de la fenêtre de classeur ou sous la fenêtre de classeur peuvent activer la méthode de comptage et ce saut de page, si la distance entre la fenêtre et le saut de page est inférieur à la moitié de la distance entre les sauts de page.
Références
Pour plus d’informations sur la façon de détecter les erreurs dans une macro, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :
213637 Utiliser « on Error » pour gérer les erreurs dans une macro