XL 2013 creer un saut de pages fixe pour toutes les feuilles du classeur

michelb74

XLDnaute Nouveau
Bonjour, communauté!!! et par avance joyeuses Pâques...

Je vous soumet mon soucis:
mon classeur contient 80 feuilles pour les factures clients;
sur chaque feuille, un premier tableau avec le détail des prestations,

un second tableau, qui est la récap du premier, et qui sert de facture,
à la fin du mois, avant l'édition des factures,j'exécute une macro (récupérée et "aménagée pour qu'elle corresponde) qui masque toutes les lignes inutilisées du 1er tableau.
je souhaite pouvoir éditer chaque feuille en recto verso et souhaite mettre sur toutes les feuilles du classeur un saut de page fixe
à la ligne 57 pour avoir une mise en page fixe, quel que soit le nombre de lignes du 1er tableau ( qui est variable en fonction du nombre de prestations )
je ne trouve pas la solution pour le faire directement sur les 80 feuilles;
N'étant hélas pas encore au point pour le langage vba, j'ose compter sur vous pour m'aider... ( en réalité c'est ma femme qui tous les mois passe 1 heure à faire de la mise en page feuille à feuille, et elle menace de divorcer...)
je joint un ex simplifié du classeur; ne pas tenir compte des liaisons "cassées" et pour cause, et des calculs de ref circulaire..

D'avance je vous remercie
 

Pièces jointes

  • saut de page .xlsm
    146.1 KB · Affichages: 31

chris

XLDnaute Barbatruc
Re : creer un saut de pages fixe pour toutes les feuilles du classeur

Bonjour

Manuellement si tu sélectionne tous les onglets concernés (clic sur 1er onglet, maintenir shift, clic sur dernier) puis insère un saut de page à la ligne 57 : cela se fait sur l'ensemble des onglets sélectionnés.

Utilise l'enregistreur de macros pour avoir le code quand tu effectues la manip.
 

CPk

XLDnaute Impliqué
Re : creer un saut de pages fixe pour toutes les feuilles du classeur

Bonjour, je pense peut-être pouvoir vous éviter le divorce

Code:
Sub miracle()
    Dim f As Worksheet
    For Each f In Worksheets
        Set f.HPageBreaks(1).Location = f.Cells(57, 1)
    Next f
End Sub
Vulgairement cela va mettre un saut de page sur toutes les feuilles à la ligne 57.
J'attends votre retour sur les bugs identifiés
 

michelb74

XLDnaute Nouveau
Re : creer un saut de pages fixe pour toutes les feuilles du classeur

Merci CPk,mais j'ai un bug avec votre code à l'execution...
"Erreur d'exécution « 9 »:
L'indice n'appartient pas à la sélection"
c'est cette ligne : Set f.HPageBreaks(1).Location = f.Cells(57, 1)
J'ai essayé de remplacer f cells par "range" mais non!!! rien n'y fait...
une idée pour me sortir de la panade???
d'avance merci!
 

michelb74

XLDnaute Nouveau
Re : creer un saut de pages fixe pour toutes les feuilles du classeur

Merci Chris, j'avais bon espoir, avec cette méthode, mais en sélectionnant tous les onglets, quand j'insère le saut de page, il se met par défaut ligne 52,col f et impossible de le modifier (mode groupe de travail)
y a t il ue méthode pour inserer un saut de page à un endroit défini par l'utilisateur???
merci d'avance
 

michelb74

XLDnaute Nouveau
Re : creer un saut de pages fixe pour toutes les feuilles du classeur

Cherchez dans les différences entre le fichier de démonstration et le fichier réel.

Miracle de Pâques!!!

j'ai zappé la messe, mais j'ai trouvé la solution (si évidente...)
en mode groupe de travail, je règle la mise en page, (marges, et %) ainsi mon tableau est ok en largeur,
il ne reste plus qu'à appliquer la macro (récupérée sur un autre forum) et adaptée,:
Sub sautPage()
Dim sh As Worksheet
For Each sh In Worksheets

sh.HPageBreaks.Add Before:=Range("A57")

Next sh
End Sub

et ça fonctionne, quel que soit le Nbe de lignes du 1er tableau, le second est plein cadre....
S'il éxistes des méthodes plus simples ou différentes, je suis preneur, il n'y a pas d'âge pour apprendre ...
Merci pour l'aide précieuse, et joyeuses fêtes de Pâques
 

chris

XLDnaute Barbatruc
Re : creer un saut de pages fixe pour toutes les feuilles du classeur

Bonjour
Merci Chris, j'avais bon espoir, avec cette méthode, mais en sélectionnant tous les onglets, quand j'insère le saut de page, il se met par défaut ligne 52,col f et impossible de le modifier (mode groupe de travail)
y a t il ue méthode pour inserer un saut de page à un endroit défini par l'utilisateur???
merci d'avance

Il faut se positionner en A57 sur un des onglet ! Si les 57 lignes ne tiennent pas dans une page, en fonction de la mise en page, il est possible qu'un saut de page automatique précède le saut forcé

Code:
    Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select
    Sheets("Feuil1").Range("A57").Select
    ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell
 

michelb74

XLDnaute Nouveau
Re : creer un saut de pages fixe pour toutes les feuilles du classeur

Bonjour


Il faut se positionner en A57 sur un des onglet ! Si les 57 lignes ne tiennent pas dans une page, en fonction de la mise en page, il est possible qu'un saut de page automatique précède le saut forcé

Code:
    Sheets(Array("Feuil1", "Feuil2", "Feuil3")).Select
    Sheets("Feuil1").Range("A57").Select
    ActiveWindow.SelectedSheets.HPageBreaks.Add Before:=ActiveCell

les 57 lignes tiennent sans soucis dans la page; il y avait bien un saut "forcé " en ligne 54!!!! mais corrigé par la mise en page (adaptation des marges et ratio pour que tout rentre en largeur)...
le saut forcé à la ligne 57 est juste parfait pour une impression R V ! surtout avec ce 1er tableau à longueur variable...
j'ai encore appris un peu plus avec excsl et vba...
merci à tous pour votre aide précieuse
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 238
Membres
103 162
dernier inscrit
fcfg