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

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
 

fb62840

XLDnaute Impliqué
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
 

thebenoit59

XLDnaute Accro
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.
 

Dranreb

XLDnaute Barbatruc
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
 

fb62840

XLDnaute Impliqué
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 ?
 

fb62840

XLDnaute Impliqué
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
 

Discussions similaires

Statistiques des forums

Discussions
312 202
Messages
2 086 177
Membres
103 152
dernier inscrit
Karibu