VBA saut de page

Résolu/Fermé
juer31 Messages postés 107 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 25 mars 2024 - 22 mars 2019 à 15:23
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 - 29 mars 2019 à 09:51
Bonjour,

J'ai déjà un code qui effectue divers opération sur une de mes feuille. et j'aimerai que lorsque la ligne 25 de ma feuille est hidden =true qu'un saut de page s'ajoute sur la ligne 26.

Je n'y arrive pas est-ce que quelqu'un peux m'aider?

Merci

1 réponse

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
23 mars 2019 à 16:19
Bonjour,

Activesheet.HPageBreaks.Add before:=Activesheet.Cells(26, 1) 

0
juer31 Messages postés 107 Date d'inscription mercredi 16 décembre 2015 Statut Membre Dernière intervention 25 mars 2024 6
28 mars 2019 à 20:47
Merci ça fonctionne #1. mais si je veux supprimer le saut de page à la fin de mon code?
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776
Modifié le 28 mars 2019 à 22:11
Bonjour,

Curieusement, on ne peut donc pas faire :
Dim hbk As HPageBreak
Set hbk = ActiveSheet.HPageBreaks.Add(before:=ActiveSheet.Cells(26, 1))
' et en fin de code 
hbk.Delete

On ne peut pas définir un objet pour un saut de page particulier !

De plus, il existe toujours un saut de page non défini, ce qui génère une erreur lorsqu'on explore tous les sauts de page, voici donc un code à ajouter en fin de code (tu peux mettre le Dim au début) :
Dim hbk As HPageBreak

On Error Resume Next
For Each hbk In ActiveSheet.HPageBreaks
  If hbk.Location.Address = ActiveSheet.Cells(26, 1).Address Then
    hbk.Delete
  End If
Next hbk
On Error GoTo 0

On pourrait aussi boucler jusqu'au pénultième saut de page mais ça me plait beaucoup moins :
Dim i as Integer

With ActiveSheet
  For i = 1 To .HPageBreaks.Count - 1
    If .HPageBreaks(i).Location.Address = .Cells(26, 1).Address Then
      .HPageBreaks(i).Delete
    End If
  Next i
End With
0
yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024 1 476 > Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023
Modifié le 29 mars 2019 à 08:34
bonjour, chez moi, Office 2016, ActiveSheet.HPageBreaks.Count reste 0, et le for each ne fais aucune itération.
peut-être ceci:
https://docs.microsoft.com/fr-fr/office/vba/api/excel.worksheet.resetallpagebreaks
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 776 > yg_be Messages postés 22724 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 25 avril 2024
29 mars 2019 à 09:51
Bonjour yg_be,

Chez moi avec 2016, ça fonctionne bien (il faut que la feuille contienne des valeurs à imprimer)
0