Interdire saut de page automatique dans une plage de cellules Excel

Bonjour,

quelqu'un saurait il me dire s'il est possible d'empêcher l'insertion automatique d'un saut de page dans une plage de cellules donnée dans Excel ?

Dans le fichier en annexe, j'ai défini 3 plages de données dans le fichier xls - imaginez 3 sous-tableaux distincts sur la même feuille.
J'aimerais interdire à Excel d'insérer un saut de page automatique en début de la plage 3, mais plutôt le forcer à introduire ce saut de page avant (fin de plage 2), de façon à ce que tout le troisième sous-tableau soit imprimé en un block sur la seconde page.

Je peux évidemment le faire manuellement mais j'aimerais savoir s'il est possible de rendre cela automatique (ie. considérer un sous tableau comme un bloque insécable). En pratique mes 3 tableaux ont une longueur variable qui s'adapte en fonction du nombre de ligne de chaque sous tableau. Il en résulte des sous tableaux de longueur variable, et donc le saut automatique peut tomber au milieu d'un sous tableau, ce que je ne désire pas ...

Ce que je cherche est en fait quelque chose de similaire à ce que Word offre comme formatage dans "Paragraphe > Enchaînements > Eviter veuves et orphelins" , soit en sélectionnant une option quelque part dans Excel, soit en VBA.

Merci,

Eric

eviter veuves et orphelins

bonjour, on peut jouer avec la plage d'impression

Sub plage3()
     With Range("Plage_3")
          With Union(.Offset(1 - .Row).Resize(.Row - 1, 3), .Resize(.Parent.UsedRange.Rows.Count - .Row + 1, 4))
               MsgBox " '2 blocs contigus 3 et 4 colonnes" & vbLf & .Address, , "Méthode 1"
               .PrintPreview
          End With

          With Union(.Offset(1 - .Row).Resize(.Row - 2, 3), .Resize(.Parent.UsedRange.Rows.Count - .Row + 1, 3))
               MsgBox "2 blocs non-contigus" & vbLf & .Address, , "méthode 2"
               .PrintPreview     '
          End With

     End With
End Sub

Bonjour Bart,

je vous remercie pour votre réponse. J'avais laissé cela un peu derrière moi mais j'y reviens maintenant. Désolé pour mon retour tardif.

Ca marche très bien si on sait quelle plage déborde d'une page sur l'autre, mais sauriez-vous comment faire si
- on a par exemple 3 plages distinctes, dont la seconde déborde d'une plage à l'autre
- comme elles sont de longueur variables, on ne sait pas a priori quelle plage va déborder de page
- une plage qui ne déborde pas en l'état peut être amenée à déborder si on bascule la plage précédente sur la page suivante.

Comment faire une macro qui s'appliquerait à toutes les plages et qui coupe dynamiquement tout cela ?

Je vous ai mis un fichier d'exemple en annexe avec la situation de départ en Sheet1 et la résultat attendu en sheet du même nom.

Merci pour votre aide !

Cordialement, Eric

re,

c'est facile ici, comme il y a une ligne vide entre chaque bloc de données. Comme ca, on a déjà 3 blocs séparés, mais si par exemple un des blocs est trop grand pour une page, avec le "Zoom=false" et le "FitToPagesWide = 3", excel réduira la taille des 3 plages pourque les 3 blocs tiennent sur une plage. (la 2ième plage est 75 lignes dans le PJ)

Sub Imprimer()
     Dim UN    As Range
     With Sheets("feuil1")

          Set c = .Columns("A").SpecialCells(xlConstants)     'les cellules qui contiennent un texte
          For Each ar In c.Areas     'boucle chaque bloc contigu
               Set UN = Union(IIf(UN Is Nothing, ar.Resize(, 2), UN), ar.Resize(, 2))
          Next
          MsgBox "mes 3 plages pour imprimer sont " & UN.Address

          With .PageSetup     'les characteristiques
               .PrintArea = UN.Address
               .Orientation = xlPortrait
               .Zoom = False     'zoom n'est pas fixe
               .FitToPagesWide = 3  'forcer que le résultat soit au max 3 pages
               .FitToPagesTall = 1
          End With

          .PrintPreview

     End With

End Sub
Rechercher des sujets similaires à "interdire saut page automatique plage"