XL 2021 Déplacer un saut de page (manuel ou pas)

  • Initiateur de la discussion Initiateur de la discussion DenisHen
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

DenisHen

XLDnaute Nouveau
Bonjour à la communauté.

Je tente de déplacer un saut de page d'une ligne vers le haut, à la seule condition : si le saut de ligne est après la valeur "E" de la colonne A.

Les sauts de page peuvent être manuels ou automatiques.
Je n'ai rien trouvé sur le déplacement de saut de page, j'ai donc obté pour insérer le saut de page au bon endroit puis supprimé le mauvais.
Mon code place bien le bon saut de page, mais ne supprime pas le mauvais (erreur).
Voici donc mon code, qui ne fonctionne pas :

VB:
Sub TestSautPage()
    Dim SautPage As HPageBreak
    For Each SautPage In ActiveSheet.HPageBreaks
      If Range("A" & SautPage.Location.Row - 1).Value = "E" Then
        Range("A" & SautPage.Location.Row - 1).PageBreak = xlPageBreakManual
        Range("A" & SautPage.Location.Row).HPageBreak.Item.Delete
      End If
    Next
End Sub
 
hello

avec l'enregistreur de macro, j'ai déplacé un saut de page manuellement
le code me donne ca:
Set ActiveSheet.HPageBreaks(1).Location = Range("A7")
ce qui se traduit par: placer le saut de page n°1 avant A7

==> il faut que
1) tu supprimes tous tes sauts de page
2) tu parcours toutes les lignes de la feuille: de i =1 à fin
3) si Ai = E, tu créés un saut de ligne

ce qui donnerait ce code
VB:
Sub Macro1()

ActiveSheet.ResetAllPageBreaks

For i = 1 To 50
    If Range("A" & i) = "E" Then
        ActiveSheet.HPageBreaks.Add Range("A" & i)
    End If
Next i
    
End Sub
 
Bonjour DenisHen, vgendron,
VB:
Sub Deplace()
Dim c As Range, i&
With ActiveSheet
    Set c = Columns(1).Find("E", , xlValues, xlWhole)
    If c Is Nothing Then Exit Sub
    For i = 1 To .HPageBreaks.Count
        If .HPageBreaks(i).Location.Row > c.Row Then
            .HPageBreaks.Add c
            If i < .HPageBreaks.Count Then .HPageBreaks(i + 1).Delete
            Exit For
        End If
    Next
End With
End Sub
Seul le 1er "E" est traité.

A+
 
Hello Job

pour traiter tous les sauts
VB:
Sub TestSautPage()
    Dim SautPage As HPageBreak
    For i = 1 To ActiveSheet.HPageBreaks.Count
        LigHP = ActiveSheet.HPageBreaks(i).Location.Row
        If Range("A" & LigHP - 1).Value = "E" Then
            Set ActiveSheet.HPageBreaks(i).Location = Range("A" & LigHP - 1)
        End If
    Next i
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
7
Affichages
106
Réponses
3
Affichages
522
Réponses
4
Affichages
362
Réponses
2
Affichages
423
Retour