Vous recevez un message d’erreur « Indice hors limites » lorsque vous utilisez HPageBreaks ou VPageBreaks.Location dans Excel

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