nombre de lignes par page

J

Johanne

Guest
Bonjour,

J'aimerais savoir s'il existe un code VBA pour obliger Excel à imprimer seulement 54 lignes par page et ensuite d'en créer une nouvelle.

Le nombre de lignes dans mon document varient d'une fois à l'autre. Des fois, je peux en avoir 1500 et d'autres 3500.

merci
 
@

@+Thierry

Guest
Bonjour Pascal, Johanne

On fait comme d'hab Pascal Toi tu as l'info et moi je fais Monsieur Plus !! lol


Voici la même méthode mais avec nettoyage des éventuels Pages Breaks résiduel ... (car sinon ils ne se nettoient pas)

Sub InsertPageBreakEvery54()
Dim L As Long, i As Long
Dim WS As Worksheet
Dim PB As HPageBreak

Application.ScreenUpdating = False
Set WS = ActiveSheet
L = WS.Range("A65536").End(xlUp).Row

On Error Resume Next
For Each PB In WS.HPageBreaks
PB.Delete
Next

For i = 55 To L Step 54
WS.HPageBreaks.Add Cells(i, 1)
Next

Application.ScreenUpdating = True
End Sub

PS on accélère aussi la procédure sans Update Screen, car même si il n'y a pas de sélection, Excel met à jour l'écran, sur 3500 lignes ça peut compter...

Bonne journée
@+Thierry
 
J

Johann

Guest
Merci beaucoup à tout le monde.

J'ai suivi la méthode de @+Thierry avec une modification. Le nettoyage des sauts de page ne fonctionnait pas, alors je l'ai remplacé par:
Cells.Select
ActiveSheet.ResetAllPageBreaks

Et tout fonctionne bien.

Encore une fois... merci beaucoup
 
@

@+Thierry

Guest
Bonjour Chris, Pascal, Johan, le Forum

Juste pour information et éclaircissement Johann, quand tu dis "Le nettoyage des sauts de page ne fonctionnait pas"... Es-tu sous Excel 97 pour avoir besoin de cette Selection de Cells ?

Par avance merci.
@+Thierry
 
J

Johanne

Guest
Non, je suis sur Excel XP. Même avec Excel 2000, ça ne fonctionnait pas.

J'ignore pourquoi.

J'ai intégré ton code à une macro existante qui copie un ensemble de lignes d'une feuille à l'autre.

Donc à chaque fois que j'active la macro, ça copie les lignes, enlève les sauts de page et en insère de nouveau.

Voici le code que j'ai:

Dim contenuCellule As String
Sheets("Matrice").Select
Rows("2:28").Select
Range("A28").Activate
selection.Copy
Sheets("Données").Select
Rows("2:2").Select
selection.Insert Shift:=xlDown
contenuCellule = ""
Range("M1").Select
ActiveCell.Select
contenuCellule = ActiveCell
Range("b2").Select
ActiveCell = contenuCellule
Run ("ClearClipboard")
Range("b8").Select
Run ("InsertPageBreakEvery54")
'MsgBox (nbfiche)
Dim L As Long, i As Long
Dim WS As Worksheet
Dim PB As HPageBreak

Application.ScreenUpdating = False
Set WS = ActiveSheet
L = WS.Range("A65536").End(xlUp).Row

Cells.Select
ActiveSheet.ResetAllPageBreaks
'On Error Resume Next
'For Each PB In WS.HPageBreaks
'PB.Delete
'Next

For i = 54 To L Step 54
WS.HPageBreaks.Add Cells(i, 1)
Next

Application.ScreenUpdating = True
 
J

Johanne

Guest
J'ai encore besoin de votre aide.

La personne pour qui j'ai fait le fichier travaille avec Excel 97.

Excel se semble pas vous reconnaître la ligne de code suivante:
WS.HPageBreaks.Add Cells(i, 1)

Nous avons exécuter la macro étape par étape et le saut de page ne veut pas s'insérer. C'est comme si Excel ignorait l'action à faire avec cette ligne de code.

Est-ce normal?
 
@

@+Thierry

Guest
Bonjour Johanne, le Forum

C'est tout à fait par hazard que je tombe sur ta dernière question que j'avais zappée, sorry.

Excel 97, et bien dans les 3/4 des cas où ça plante c'est due au fait qu'il faut sélectionner la Feuille et une Cellule avant toute opération. Comme je vois que tu as l'air de travailler sur plusieurs feuilles, pense à faire la sélection (Sheets("TheSheetWithHPageBreaks").Select... Et ptet même ensuite Range("A1").Select...

Vu tous ces Select (arrf Vadérétro Select LOL!!), tu peux optimiser en ajoutant "Application.ScreenUpdating = False" en début de macro en rétablissant à False en fin de macro...

Bonne Semaine
@+Thierry
 
J

Johanne

Guest
Thierry

C'est tout aussi par hazard que je tombe sur ta réponse.

Si la personne qui utilise le fichier me revient et me demander de modifier le fichier, je vais en profiter pour essayer ton code.

Pour l'instant, le fichier semble bien fonctionné, car ça fait des mois que j'en ai pas eu de nouvelle.

Merci
 
P

Pascal76

Guest
Bonjour le fil

Je me permets de mettre un petit grain de sel vu que j'avais participé au fil.

Johanne je suis mort de rire quend je lis "C'est tout aussi par hazard que je tombe sur ta réponse."

Disons plutôt : "Suite à une gentille petite remontrance de Jean-Marie (chti160) Lien supprimé j'ai repris mes anciens fils pour y donner une réponse."

Allez bonne journée

Pascal
 

Discussions similaires

Réponses
13
Affichages
327

Statistiques des forums

Discussions
312 329
Messages
2 087 327
Membres
103 516
dernier inscrit
René Rivoli Monin