Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

ligne à repeter en bas excel

RONIBO

XLDnaute Impliqué
Bonjour,

Je viens vers vous suite à un problème que je n'arrive pas à résoudre.

J'ai crée un modèle de facture, malheureusement parfois il peut arriver que mes factures fassent plusieurs pages.

Afin de faciliter la création de ma facture à plusieurs pages, j'ai crée un bouton qui ajoute des lignes sur cette partie :


Mon problème est quand j'arrive à la dernière ligne deux ma facture et qu'il me manque quelques lignes (exemple 7 lignes) pour finaliser ma facture, je suis obliger d'ajouter 31 lignes pour rendre ma facture compréhensible, sinon j'obtiens ceci :

Première page :


Deuxième page :


Lorsque j'ajoute 31 lignes pour créer la prochaine page alors qu'il m'en fallait que 7 (par exemple), voici s'que j'obtiens.
Première page :


Deuxième page :


En gros la deuxième page ne sert à rien car il y a aucune donnée mise à part les totaux.

Je voulais savoir si l'on peut utiliser la répétition des lignes du bas comme j'ai fais pour les lignes du haut. (Mise en page > Feuille > Ligne à répéter en haut)

Ou avez vous une autre solution à me proposer via vba.

J'ai pensé à un modèle comme ceci (C'est juste une idée)
Première page :


Deuxième page :


J'espère que je me suis fais comprendre

Je remercie par avance

Bonne journée
 

Pièces jointes

  • Exemple.xlsm
    55.5 KB · Affichages: 147
  • Exemple.xlsm
    55.5 KB · Affichages: 149
  • Exemple.xlsm
    55.5 KB · Affichages: 148

Dranreb

XLDnaute Barbatruc
Re : ligne à repeter en bas excel

Vous pouvez aussi tout simplement ajuster le nombre de page en hauteur, dans la mise en page. Définissez une zone d'impression couvrant les totaux, bien sûr.
 

Dranreb

XLDnaute Barbatruc
Re : ligne à repeter en bas excel

Connais pas les manœuvres en Excel 2007.
Alors essayez aussi ça :
VB:
Sub TestSP()
SautsDePages Feuil1, 20
Feuil1.PrintPreview
End Sub

Sub SautsDePages(ByVal F As Worksheet, ByVal NbLignesPPageMax As Long)
Dim ZImpr As Range, ZEnt As Range, LDéb As Long, LAprèsFin As Long, _
   NbLignes As Long, NbPg As Long, NbLpP As Long, L As Long
On Error Resume Next
Set ZImpr = F.Range(F.PageSetup.PrintArea)
If Err Then MsgBox "Veuillez définir une zone d'impression" _
   & vbLf & "sur la feuille """ & F.Name & """.", vbCritical, "SautsDePages": Exit Sub
Set ZEnt = F.Range(F.PageSetup.PrintTitleRows)
On Error GoTo 0
If Not ZEnt Is Nothing Then LDéb = ZEnt.Row + ZEnt.Rows.Count Else LDéb = ZImpr.Row
LAprèsFin = ZImpr.Row + ZImpr.Rows.Count
NbLignes = LAprèsFin - LDéb
NbPg = ((NbLignes + NbLignesPPageMax - 1) \ NbLignesPPageMax)
NbLpP = NbLignes \ NbPg: If NbLpP * NbPg < NbLignes Then NbLpP = NbLpP + 1
F.ResetAllPageBreaks
L = LDéb: Do: L = L + NbLpP: If L >= LAprèsFin Then Exit Sub
   F.HPageBreaks.Add F.Rows(L): Loop
End Sub
 

Dranreb

XLDnaute Barbatruc
Re : ligne à repeter en bas excel

Définir une zone d'impression.
En Excel 2003 menus Fichier, Mise en page…, onglet Feuille, rubrique Zone d'impression.
Vous avez bien défini des lignes à répéter en haut sur chaque page. Ça doit être à peu près au même endroit.
 

grisan29

XLDnaute Accro
Re : ligne à repeter en bas excel

bonsoir

dranreb j'ai essayer ton code dans son fichier et il fonctionne mieux que celui que j'ai donné
mais
Code:
SautsDePages Feuil1, 20
que veux dire Feuil1, 20
Pascal
 
Dernière édition:

Dranreb

XLDnaute Barbatruc
Re : ligne à repeter en bas excel

F:=Feuil1 c'est un objet Worksheet dont le nom est repris de la rubrique Microsoft Excel Objet du projet VBA, à gauche du nom Excel de la feuille rappelé entre parenthèses.
NbLignesPPageMax:=20 est le nombre de ligne maxi qu'on souhaite dans chaque page.
 

Dranreb

XLDnaute Barbatruc
Re : ligne à repeter en bas excel

Je ne comprend pas la question. Il n'y a pas à définir de cellule. Il y a la plage rectangulaire à imprimer qu’il faut définir comme zone d'impression pour qu'on en connaisse la fin pour calculer le nombre de pages nécessaires en fonction du nombre de lignes maxi désirées dans chacune. Pour la définir sur la plage utilisée de la feuille vous pouvez utiliser cette macro :
VB:
Sub ZImpPlageUtilisée()
ActiveSheet.PageSetup.PrintArea = ActiveSheet.UsedRange.Address
End Sub
 

RONIBO

XLDnaute Impliqué
Re : ligne à repeter en bas excel

Bonjour le fil,

Danreb j' ai tout essayé mais je me retrouve avec un document à 26 pages

Tu auras pas un exemple de fichier à me donner ?

J'espère que c'est pas à cause de ma version d'office

A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…