Erreur sur un code VBA : d'oú vient-elle ?

Bonjour,

J'ai pu obtenir un code VBA sur ce forum et je dois un grand merci à la personne qui me l'a procuré et tous ceux qui m'ont aidé.

Cependant, quelques fois, il me retourne une erreur. Pas à chaque fois... J'aurais voulu savoir ce qui engendre cette erreur. L'erreur est la numéro 9 : l'indice n'appartient pas à la sélection.

        Option Explicit

Public Sub detection_fin_de_page()

    'Mise en place et reset de la colonne du curseur dans la colonne concernée

    Range("K16:K109").Select

    Selection.ClearContents

    Range("K16").Select

    'Déclaration des variables

    Dim Sauts_naturels, num_cells, i As Long

    'Code pour indiquer fin de page

    With ActiveSheet

        Sauts_naturels = .HPageBreaks.Count

        For i = 1 To Sauts_naturels

            num_cells = .HPageBreaks(i).Location.Row

            .Cells(num_cells - 1, 11).Value = "fin de page"

            'Le N - 1 est utile pour que la phrase se place avant les traits de séparations.

        Next i

    End With

End Sub

Merci de votre aide.

Bonjour,

Ci-dessous ton code ...

Option Explicit
Public Sub detection_fin_de_page()
    'Déclaration des variables
    Dim Sauts_naturels As Long
    Dim num_cells As Long
    Dim i As Long

    'Mise en place et reset de la colonne du curseur dans la colonne concernée
    Range("K16").Select
    Range("K16:K109").ClearContents

    'Code pour indiquer fin de page
    With ActiveSheet
        Sauts_naturels = .HPageBreaks.Count
        If Sauts_naturels = 0 Then MsgBox "Aucun saut de Page": Exit Sub
        For i = 1 To Sauts_naturels
            num_cells = .HPageBreaks(i).Location.Row
            .Cells(num_cells - 1, 11).Value = "fin de page"
            'Le N - 1 est utile pour que la phrase se place avant les traits de séparations.
        Next i
    End With
End Sub

En espèrant que cela t'aide

Hélas, le pb se reproduit

stephane17620 a écrit :

Hélas, le pb se reproduit

Dans quelles circonstances ... ???

Un fichier joint ... permettrait de reproduire ton erreur ...et donc de pouvoir tenter de la corriger ...

Effectivement,

Le but est la macro m'inscrive "Fin de page" après les traits de séparations, et ce, sans erreur ! Je ne vois pas d'où peut venir cette erreur !

Ps : Le fichier est en pièce jointe. Ca sera plus simple !

20exemple.xlsm (53.48 Ko)

Re,

Merci pour le fichier ...

Mais tu ne me dis pas quand et comment se produit ton erreur ...???

Est-ce-qu'elle se produit encore avec le code suivant :

Option Explicit

Sub Test()
    Dim Sauts_naturels As Long
    Dim num_cells As Long
    Dim I As Long
    With Feuil11
        Sauts_naturels = .HPageBreaks.Count
        If Sauts_naturels =0 Then Exit Sub 
        For I = 1 To Sauts_naturels
            num_cells = .HPageBreaks(I).Location.Row
            .Cells(num_cells - 1, 11).Value = "fin de page"
        Next I
    End With
End Sub

Bonjour, elle continue à se produire lors de l'exécution. Il me surligne la ligne sauts_naturels=.HPageBreaks(i).location.row

Bonjour,

cette instruction ne se trouve pas dans le code fourni.

Effectivement je me suis trompé dans ma copie. Il s'agit de l'instruction ligne 10. Elle se trouve dans la boucle For.

Bonjour,

ceci semble être un bug connu de microsoft. la propriété location ne fonctionne pas correctement si la cellule active est avant le saut de page que l'on est en train d'examiner.

https://support.microsoft.com/fr-be/help/210663/you-receive-a-subscript-out-of-range-error-message-when-you-use-hpageb

workaround

Option Explicit

Public Sub Test()
    Dim Sauts_naturels, num_cells, I As Long, ca
    With ActiveSheet
    Set ca = ActiveCell
    .Cells(Rows.Count, 1).Select
        Sauts_naturels = .HPageBreaks.Count
        For I = 1 To Sauts_naturels - 1
            num_cells = .HPageBreaks(I).Location.Row
            .Cells(num_cells - 1, 11).Value = "fin de page"
        Next I
    End With
    ca.Select
End Sub

Ahhhh ! Merci merci ! Ca marche ! Merci beaucoup ! Merci á tous pour votre aide !

ceci semble être un bug connu de microsoft. la propriété location ne fonctionne pas correctement si la cellule active est avant le saut de page que l'on est en train d'examiner.

https://support.microsoft.com/fr-be/hel ... use-hpageb

Bien vu h2so4 ... pour l'identification de ce problème ... !!!

Bonjour,

merci au hasard ou à google qui m'a fait découvrir cette page quand je cherchais à en savoir plus sur les propriétés de HPageBreaks

Rechercher des sujets similaires à "erreur code vba vient"