Symptômes
Lorsque vous utilisez la propriété Location ou Location.Address des sauts de page verticaux ou horizontaux dans une macro Microsoft Visual Basic pour Applications, vous pouvez recevoir le message d’erreur suivant :
Remarque
Erreur d’exécution « 9 » :
Indice hors limites
Cause
Ce problème peut se produire si les conditions suivantes sont remplies :
La cellule active se trouve au-dessus du saut de page horizontal ou à gauche du saut de page vertical auquel fait référence 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 similaire au code suivant :
Sub TestHorizontal() ActiveSheet.Range("CZ1000").Value = 1 MsgBox ActiveSheet.HPageBreaks.Count MsgBox ActiveSheet.HPageBreaks(1).Location.Address MsgBox ActiveSheet.HPageBreaks(2).Location.Address End 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.Address End Sub
Solution de contournement
Microsoft fournit des exemples de programmation à des fins d’illustration uniquement, sans garantie exprimée ou implicite. Cela inclut, sans s’y limiter, les garanties implicites de qualité commerciale ou d’adéquation à un usage 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 techniciens du Support technique Microsoft peuvent vous expliquer les fonctionnalités d'une procédure particulière, mais ils ne peuvent pas modifier les exemples en vue de vous fournir des fonctionnalités supplémentaires ou de créer des procédures répondant à 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 utilise la propriété Location des sauts de page horizontaux ou verticaux. Par exemple, utilisez le code suivant pour sélectionner la cellule de fin, utilisez la propriété Location, puis réélectionnez 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.Select
End Sub
Une fois la propriété Location calculée, vous pouvez à nouveau sélectionner la cellule active d’origine. Si vous utilisez du code pour faire défiler entre la première et la dernière cellule, ou si vous sélectionnez la dernière cellule et que vous réélectionnez immédiatement la cellule de départ, l’erreur peut toujours se produire. L’écran doit redessiner et la propriété Location doit être calculée pour que la solution de contournement soit efficace. Si vous utilisez le code ci-dessus avec
Application.ScreenUpdating = False
pour empêcher le redessinage de l’écran, le problème se produit toujours.
État
Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».
Informations supplémentaires
Si vous utilisez la méthode Count avec la propriété VPageBreaks ou HPageBreaks, vous pouvez recevoir un résultat égal à zéro. Cela se produit dans les conditions répertoriées dans la section « Cause ». Si un saut de page est visible, la méthode Count peut donner la réponse correcte. La méthode Count pour les sauts de page verticaux ou horizontaux peut donner le résultat attendu si un saut de page est proche de la partie visible de la fenêtre du classeur. La solution de contournement indiquée précédemment peut être utilisée pour obtenir le nombre attendu.
Les sauts de page situés à droite de la fenêtre du classeur ou en dessous de la fenêtre de classeur peuvent permettre à la méthode Count de fonctionner et à ce saut de page d’être localisé, si la distance entre la fenêtre et le saut de page est inférieure à la moitié de la distance entre les sauts de page.
Références
Pour plus d’informations sur la façon d’intercepter les erreurs dans une macro, cliquez sur le numéro d’article suivant pour afficher l’article dans la Base de connaissances Microsoft :
213637 Comment utiliser « On Error » pour gérer les erreurs dans une macro