Menu

VBA saut de page [Résolu]

Messages postés
97
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
22 mai 2019
- - Dernière réponse : Patrice33740
Messages postés
7722
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
23 avril 2019
- 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
Afficher la suite 

Votre réponse

1 réponse

Messages postés
7722
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
23 avril 2019
1158
0
Merci
Bonjour,

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

juer31
Messages postés
97
Date d'inscription
mercredi 16 décembre 2015
Statut
Membre
Dernière intervention
22 mai 2019
6 -
Merci ça fonctionne #1. mais si je veux supprimer le saut de page à la fin de mon code?
Patrice33740
Messages postés
7722
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
23 avril 2019
1158 -
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
yg_be
Messages postés
7774
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 mai 2019
381 > Patrice33740
Messages postés
7722
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
23 avril 2019
-
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
Patrice33740
Messages postés
7722
Date d'inscription
dimanche 13 juin 2010
Statut
Membre
Dernière intervention
23 avril 2019
1158 > yg_be
Messages postés
7774
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
23 mai 2019
-
Bonjour yg_be,

Chez moi avec 2016, ça fonctionne bien (il faut que la feuille contienne des valeurs à imprimer)
Commenter la réponse de Patrice33740