OVH Cloud OVH Cloud

saut de page

13 réponses
Avatar
...Patrick
Bonjour,

je dois coller un en dessous de l'autre des tableaux de meme structure sauf
pour la longueur (nb variable de lignes), et j'aimerais après collage de ces
tableaux déterminer si possible , des sauts de pages automatiquement avec
une présentation en portrait de plus ou moins 66 lignes - taille de police
9 - mais je ne sais pas comment formuler ça en vba pour lui dire que les
tableaux sont des entités à prendre en entier pour ne pas couper le dernier
en 2 et avoir la suite sur la page suivante..et ainsi de suite.

Merci pour votre aide.

Patrick

10 réponses

1 2
Avatar
JB
Bonjour,

On suppose que les blocs sont séparés par au moins une ligne en
colonne A:


Sub essai()
ActiveSheet.ResetAllPageBreaks
[A3].Select
Do While ActiveCell.Row < [A65000].End(xlUp).Row
ActiveCell.End(xlDown).Offset(1, 0).Select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:¬tiveCell
ActiveCell.End(xlDown).Select
Loop
[A3].Select
End Sub

A
3 aaa
4 aaa
5 aaa
6 aa
7 aaa
8 aaa
9 aaa
10aaa
11
12 bbb
13 bbb
14 bbb

Cordialement JB
Avatar
...Patrick
Merci mais ça ne peut pas fonctionner comme ça car la colonne A ne comporte
pas toujours des cellules occupées; il faudrait donc tester si toutes les 66
lignes, celle-ci est vide: si oui on mets le pagebreak, sinon on descends
jusqu'à la ligne vide entière suivante.
Je n'ai pas encore trouvé
Merci


"JB" a écrit dans le message de news:


Bonjour,

On suppose que les blocs sont séparés par au moins une ligne en
colonne A:


Sub essai()
ActiveSheet.ResetAllPageBreaks
[A3].Select
Do While ActiveCell.Row < [A65000].End(xlUp).Row
ActiveCell.End(xlDown).Offset(1, 0).Select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:¬tiveCell
ActiveCell.End(xlDown).Select
Loop
[A3].Select
End Sub

A
3 aaa
4 aaa
5 aaa
6 aa
7 aaa
8 aaa
9 aaa
10aaa
11
12 bbb
13 bbb
14 bbb

Cordialement JB
Avatar
...Patrick
oupssssss
si pas libre on remonte de 1,2,3 ou 4 lignes pour trouver une vide

Merci

"...Patrick" a écrit dans le message de news:

Merci mais ça ne peut pas fonctionner comme ça car la colonne A ne
comporte pas toujours des cellules occupées; il faudrait donc tester si
toutes les 66 lignes, celle-ci est vide: si oui on mets le pagebreak,
sinon on descends jusqu'à la ligne vide entière suivante.
Je n'ai pas encore trouvé
Merci


"JB" a écrit dans le message de news:


Bonjour,

On suppose que les blocs sont séparés par au moins une ligne en
colonne A:


Sub essai()
ActiveSheet.ResetAllPageBreaks
[A3].Select
Do While ActiveCell.Row < [A65000].End(xlUp).Row
ActiveCell.End(xlDown).Offset(1, 0).Select
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:¬tiveCell
ActiveCell.End(xlDown).Select
Loop
[A3].Select
End Sub

A
3 aaa
4 aaa
5 aaa
6 aa
7 aaa
8 aaa
9 aaa
10aaa
11
12 bbb
13 bbb
14 bbb

Cordialement JB



Avatar
Modeste
Bonsour® ...Patrick avec ferveur ;o))) vous nous disiez :

je dois coller un en dessous de l'autre des tableaux de meme structure
sauf
pour la longueur (nb variable de lignes), et j'aimerais après collage de
ces
tableaux déterminer si possible , des sauts de pages automatiquement avec
une présentation en portrait de plus ou moins 66 lignes - taille de police
9 - mais je ne sais pas comment formuler ça en vba pour lui dire que les
tableaux sont des entités à prendre en entier pour ne pas couper le
dernier
en 2 et avoir la suite sur la page suivante..et ainsi de suite.


Lors du collage, cela ne serait-il pas plus simple d'inserer d'abord le saut
de page
puis aussitot aprés le tableau ...
Non ???


--
--
@+
;o)))

Avatar
...Patrick
Salut Modeste,

donc tu me proposes à chaque collage d'un tableau dans le résumé de mettre
les sauts de pages, ok mais mon problème reste encore de savoir où couper
....sans le faire en plein dans un des tableaux importés.
Mais c'est là mon problème, je ne sais pas bien comment m'y prendre pour ce
faire...
Merci
ps: le code pour importer étant déjà écrit, la demande est venue après pour
les sauts de pages, donc je voudrais une sub en plus que j'appelle en
dernier.

Patrick


"Modeste" a écrit dans le message de news:
e$9rmx$
Bonsour® ...Patrick avec ferveur ;o))) vous nous disiez :

je dois coller un en dessous de l'autre des tableaux de meme structure
sauf
pour la longueur (nb variable de lignes), et j'aimerais après collage de
ces
tableaux déterminer si possible , des sauts de pages automatiquement avec
une présentation en portrait de plus ou moins 66 lignes - taille de
police
9 - mais je ne sais pas comment formuler ça en vba pour lui dire que les
tableaux sont des entités à prendre en entier pour ne pas couper le
dernier
en 2 et avoir la suite sur la page suivante..et ainsi de suite.


Lors du collage, cela ne serait-il pas plus simple d'inserer d'abord le
saut de page
puis aussitot aprés le tableau ...
Non ???


--
--
@+
;o)))





Avatar
JB
http://cjoint.com/?fEtYXa50X4

Sub essai()
ActiveSheet.ResetAllPageBreaks
h = 10 ' hauteur de page
horizon = 5 ' horizon de recherche d'une cellule vide au dessus
[A3].Select
Do While ActiveCell.Row < [A65000].End(xlUp).Row
ActiveCell.Offset(h, 0).Select
If ActiveCell = "" Then
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:¬tiveCell
Else
If ActiveCell.Offset(-1, 0) = "" Then
ActiveCell.End(xlUp).Offset(1, 0).Select
Else
Set c = Range(ActiveCell.Offset(-h + horizon, 0),
ActiveCell).Find("", LookIn:=xlValues)
If Not c Is Nothing Then
ActiveCell.End(xlUp).Offset(-1, 0).Select
End If
End If
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:¬tiveCell
End If
Loop
[A3].Select
End Sub

JB
Avatar
...Patrick
Merci Jacques pour le fichier joint mais ça ne corresponds pas
malheureusement pas;

voilà mon fichier qui peut évidemment comporter plus ou moins de lignes à
l'avenir...

http://users.skynet.be/fa401972/Resume.zip


Merci

Patrick

"JB" a écrit dans le message de news:

http://cjoint.com/?fEtYXa50X4

Sub essai()
ActiveSheet.ResetAllPageBreaks
h = 10 ' hauteur de page
horizon = 5 ' horizon de recherche d'une cellule vide au dessus
[A3].Select
Do While ActiveCell.Row < [A65000].End(xlUp).Row
ActiveCell.Offset(h, 0).Select
If ActiveCell = "" Then
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:¬tiveCell
Else
If ActiveCell.Offset(-1, 0) = "" Then
ActiveCell.End(xlUp).Offset(1, 0).Select
Else
Set c = Range(ActiveCell.Offset(-h + horizon, 0),
ActiveCell).Find("", LookIn:=xlValues)
If Not c Is Nothing Then
ActiveCell.End(xlUp).Offset(-1, 0).Select
End If
End If
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:¬tiveCell
End If
Loop
[A3].Select
End Sub

JB



Avatar
JB
http://cjoint.com/?fEv7c6rb2q

Sub essai_JB()
ActiveSheet.ResetAllPageBreaks
h = 55 ' hauteur de page
NbLignesVides = 2
Largeur = 15
[A3].Select
Do While ActiveCell.Row < [A65000].End(xlUp).Row
ActiveCell.Offset(h, 0).Select
If Application.CountA(ActiveCell.Resize(NbLignesVides, Largeur)) >=
0 Then
témoin = True
decal = -1
Do While témoin
If Application.CountA(ActiveCell.Offset(decal,
0).Resize(NbLignesVides, Largeur)) = 0 Then
témoin = False
Else
decal = decal - 1
End If
Loop
ActiveCell.Offset(decal, 0).Select
End If
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:¬tiveCell
Loop
[A3].Select
End Sub

JB
Avatar
Jacquouille
Bonsoir Patrick
Je pense que la solution de Gilbert est la bonne car:
-si ton tableau est petit, il sera seul sur une page, donc pas de prob
-s'il est fort grand, macro ou pas, il s'imprimera sur plussieurs feuilles,
avec le risque que le tableau sera quand même coupé.

Donc, si tu insères un saut de page, tu es gagnant.
Bonjour de Liéch.
--
Bien amicalmement,
Vivement conseillés:
http://www.excelabo.net
http://jacxl.free.fr/mpfe/trombino.html
http://dj.joss.free.fr/netiquet.htm
http://frederic.sigonneau.free.fr/

Jacquouille.

"...Patrick" a écrit dans le message de news:

Salut Modeste,

donc tu me proposes à chaque collage d'un tableau dans le résumé de mettre
les sauts de pages, ok mais mon problème reste encore de savoir où couper
....sans le faire en plein dans un des tableaux importés.
Mais c'est là mon problème, je ne sais pas bien comment m'y prendre pour
ce faire...
Merci
ps: le code pour importer étant déjà écrit, la demande est venue après
pour les sauts de pages, donc je voudrais une sub en plus que j'appelle en
dernier.

Patrick


"Modeste" a écrit dans le message de news:
e$9rmx$
Bonsour® ...Patrick avec ferveur ;o))) vous nous disiez :

je dois coller un en dessous de l'autre des tableaux de meme structure
sauf
pour la longueur (nb variable de lignes), et j'aimerais après collage de
ces
tableaux déterminer si possible , des sauts de pages automatiquement
avec
une présentation en portrait de plus ou moins 66 lignes - taille de
police
9 - mais je ne sais pas comment formuler ça en vba pour lui dire que les
tableaux sont des entités à prendre en entier pour ne pas couper le
dernier
en 2 et avoir la suite sur la page suivante..et ainsi de suite.


Lors du collage, cela ne serait-il pas plus simple d'inserer d'abord le
saut de page
puis aussitot aprés le tableau ...
Non ???


--
--
@+
;o)))








Avatar
JB
Gère les blocs qui ne tiennent pas sur une page:

http://cjoint.com/?fFfDOE5Zec

Sub essai_JB()
ActiveSheet.ResetAllPageBreaks ' raz
h = 57 ' hauteur de page
nlv = 2 ' Nombre de lignes vides
lg = 15 ' largeur
[A3].Select
Do While ActiveCell.Row < [A65000].End(xlUp).Row
ActiveCell.Offset(h, 0).Select
tém = True
d = 0 ' décalage
Do While tém And d > -h ' on cherche une plage vide :nlv * lg
If Application.CountA(ActiveCell.Offset(d, 0).Resize(nlv, lg)) =
0 Then
tém = False
Else
d = d - 1
End If
Loop
If d > -h Then ActiveCell.Offset(d, 0).Select ' nb lignes du bloc
h
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:¬tiveCell

Loop
[A3].Select
End Sub

JB



Merci Jacques pour le fichier joint mais ça ne corresponds pas
malheureusement pas;

voilà mon fichier qui peut évidemment comporter plus ou moins de lign es à
l'avenir...

http://users.skynet.be/fa401972/Resume.zip


Merci

Patrick

"JB" a écrit dans le message de news:

http://cjoint.com/?fEtYXa50X4

Sub essai()
ActiveSheet.ResetAllPageBreaks
h = 10 ' hauteur de page
horizon = 5 ' horizon de recherche d'une cellule vide au dessus
[A3].Select
Do While ActiveCell.Row < [A65000].End(xlUp).Row
ActiveCell.Offset(h, 0).Select
If ActiveCell = "" Then
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:¬tiveCell
Else
If ActiveCell.Offset(-1, 0) = "" Then
ActiveCell.End(xlUp).Offset(1, 0).Select
Else
Set c = Range(ActiveCell.Offset(-h + horizon, 0),
ActiveCell).Find("", LookIn:=xlValues)
If Not c Is Nothing Then
ActiveCell.End(xlUp).Offset(-1, 0).Select
End If
End If
ActiveWindow.SelectedSheets.HPageBreaks.Add Before:¬tiveCell
End If
Loop
[A3].Select
End Sub

JB





1 2