Pourquoi ce code d'insertion de sauts de pages ne fonctionne pas comme attendu ?

  • Initiateur de la discussion Initiateur de la discussion fb62840
  • 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 !

fb62840

XLDnaute Impliqué
Bonjour à toutes et tous,

J'ai testé ce code :

Code:
Sub SautsDePage(ByVal NBTests As Integer, ByVal ate As Boolean, ByVal Feuille As Worksheet)

    Dim intSautPage As Integer
    Dim intNbSauts  As Integer
    
    With Feuille
        intNbSauts = .HPageBreaks.Count
        'Supprimer tous les sauts de page horizontaux
        For intSautPage = intNbSauts To 1 Step -1
        If .HPageBreaks.Item(intSautPage).Type = xlPageBreakManual Then
            .HPageBreaks.Item(intSautPage).Delete '''
            .VPageBreaks.Add Before:=Range("X1") '''
            .VPageBreaks.Add Before:=Range("Au1")
            .HPageBreaks.Add Before:=Range("A" & J * 69)
        End If
        Next
    End With
 End Sub

En fait ce qu'il produit est étonnant :
Sur le premier onglet tout s'applique correctement

Sur les autres onglets pas du tout...
Les sauts de pages verticaux se positionne après la colonne T et après la colonne AO

Un peu d'aide serait bienvenue pour m'aider à corriger
 
Re : Pourquoi ce code d'insertion de sauts de pages ne fonctionne pas comme attendu

Elle s'applique dans l'exécution d'une autre macro dont voici le code :

Code:
Set Etab = Application.Workbooks.Add(Chemin & "\Etab.xls") 
    
    modele.Sheets("Feuil1").Name = UCase(Etab.Sheets(Dep).Range("a1").Value) 'Nommer la feuille 1 du nom de la ville en A1
    SautsDePage Para.Sheets("Paramtr").Range("P12").Value, Para.Sheets("Paramtr").Range("P16"), _
        modele.Sheets(UCase(Etab.Sheets(Dep).Range("a1").Value)) 'Créer un onglet par ville (A1) et Nbtsts

    Etab.Worksheets(Dep).Activate
    ActiveSheet.Range("A2").Select 'Créer un onglet par ville (A2) et Nbtsts
    
    
    'Cette boucle crée les onglets correspondant aux villes
    i = 2
    While Not IsEmpty(Etab.Worksheets(Dep).Range("A" & i))
        
        modele.Activate
        modele.Sheets.Add.Name = UCase(Etab.Worksheets(Dep).Range("A" & i).Value)
        modele.Sheets(UCase(Etab.Worksheets(Dep).Range("A" & i).Value)).Move after:=Sheets(Sheets.Count)
        modele.Sheets(UCase(Etab.Sheets(Dep).Range("a1").Value)).Activate
        
        ActiveSheet.Cells.Select
        Selection.Copy
        ActiveSheet.Range("A1").Select
        Sheets(UCase(Etab.Worksheets(Dep).Range("A" & i).Value)).Select
        ActiveSheet.Range("A1").Select
        ActiveSheet.Paste
        ActiveSheet.Range("A1").Select
        Application.CutCopyMode = False
        ActiveSheet.DisplayAutomaticPageBreaks = False
        ActiveSheet.PageSetup.PrintArea = "$A$1:$AU$120"
        ActiveWindow.Zoom = 40
        'With ActiveSheet.PageSetup
            '.Zoom = False
            '.FitToPagesWide = 1
            '.FitToPagesTall = 1
        'End With
        
        SautsDePage Para.Sheets("Paramtr").Range("C12").Value, Para.Sheets("Paramtr").Range("P16"), _
        modele.Sheets(UCase(Etab.Worksheets(Dep).Range("A" & i).Value))
        ActiveSheet.PageSetup.Zoom = 33
        
                  
        i = i + 1
        Etab.Activate
        Worksheets(Dep).Activate
    Wend
    
    modele.Sheets(UCase(Etab.Sheets(Dep).Range("a1").Value)).Activate
    ActiveSheet.Protect ("valerie")
    ActiveSheet.EnableSelection = xlUnlockedCells
    
    
    modele.Sheets("Listing").Visible = xlSheetVeryHidden
    Etab.Close savechanges:=False
    Etab.Close savechanges:=False
    Application.ScreenUpdating = True
    modele.Activate
 
Re : Pourquoi ce code d'insertion de sauts de pages ne fonctionne pas comme attendu

Bonjour fb.

Aurais-tu un fichier à transmettre ?
Je pencherai, à mon avis, à la variable Feuille qui ne se modifierai pas, ainsi seule la première page subirait la boucle des sauts de page.
 
Re : Pourquoi ce code d'insertion de sauts de pages ne fonctionne pas comme attendu

Bonsoir.
Dans votre Sub SautsDePage il y a des références à des cellules de la feuille active au lieu de Feuille.
Range("X1") au lieu de .Range("X1") par exemple
 
Re : Pourquoi ce code d'insertion de sauts de pages ne fonctionne pas comme attendu

Bonjour,

Merci à tous les 2.
J'ai vérifié et le code ne s'exécute pas en boucle sur la même feuille.
Effectivement le .Range est plus adapté et accélère l'exécution du code, ce qui est intéressant.

Par contre je ne parviens pas à me débarrasser d'un saut de page horizontal automatique qui est sur chaque feuille en ligne 44.
Une idée pour le supprimer par le code ?
 
Re : Pourquoi ce code d'insertion de sauts de pages ne fonctionne pas comme attendu

Bonjour.

Peut être ajuster à 1 page en hauteur…

Bonne idée en effet, ça règle une partie du problème, l'étonnant c'est que je me retrouve tout de même avec pas mal de pages lancées à l'impression et qui sont vides...

Je pense que je vais tout reprendre à zéro...

Merci pour votre aide
 
- 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
Retour