Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

impression, sauts de pages, lignes à répéter en haut.

13 réponses
Avatar
intactsaphir
Bonjour,
Une feuille de saisie représente un ensemble de tableaux les uns à la suite des autres.
Je souhaiterais en vba:
1) définir la zone d'impression
2) que l'impression de ces données puisse s'effectuer à la suite de sauts de page déterminés par le changement de libellés d'une colonne.
3) que l'impression puisse tenir compte de "lignes à répéter en haut" par exemple les champs de colonnes (AB, champ a, champ b; CD, champ c, champ d).


merci de vos réponses

10 réponses

1 2
Avatar
LSteph
Bonjour,

Un exemple ..suppose tous titres en colonne1 et tous enregistrements
renseignés en colonne1:

Sub mispg()
Dim L As String, T As String, i As Long
L = [a65536].End(xlUp).Address
T = [iv1].End(xlToLeft).Address
For i = Range(L).Row To 2 Step -1
With [a:a].Cells
If .Item(i) <> .Item(i).Offset(-1, 0) Then _
ActiveSheet.HPageBreaks.Add Before:=.Item(i)
End With
Next i
With ActiveSheet.PageSetup
.PrintArea = L & ":" & T
.PrintTitleColumns = ActiveSheet.Columns(1).Address
.PrintTitleRows = ActiveSheet.Rows(1).Address
End With

End Sub

'lSteph

On 8 sep, 14:46, intactsaphir wrote:
Bonjour,
Une feuille de saisie représente un ensemble de tableaux les uns à la suite des
autres.
Je souhaiterais en vba:
1) définir la zone d'impression
2) que l'impression de ces données puisse s'effectuer à la suite de s auts de
page déterminés par le changement de libellés d'une colonne.
3) que l'impression puisse tenir compte de "lignes à répéter en hau t" par
exemple les champs de colonnes (AB, champ a, champ b; CD, champ c, champ d).

merci de vos réponses


Avatar
intactsaphir
LSteph a écrit le 08/09/2009 à 16h18 :
Bonjour,

Un exemple ..suppose tous titres en colonne1 et tous enregistrements
renseignés en colonne1:

Sub mispg()
Dim L As String, T As String, i As Long
L = [a65536].End(xlUp).Address
T = [iv1].End(xlToLeft).Address
For i = Range(L).Row To 2 Step -1
With [a:a].Cells
If .Item(i) <> .Item(i).Offset(-1, 0) Then _
ActiveSheet.HPageBreaks.Add Before:=.Item(i)
End With
Next i
With ActiveSheet.PageSetup
.PrintArea = L & ":" & T
.PrintTitleColumns = ActiveSheet.Columns(1).Address
.PrintTitleRows = ActiveSheet.Rows(1).Address
End With

End Sub

'lSteph

On 8 sep, 14:46, intactsaphir wrote:
Bonjour,
Une feuille de saisie représente un ensemble de tableaux les uns
à la suite des
autres.
Je souhaiterais en vba:
1) définir la zone d'impression
2) que l'impression de ces données puisse s'effectuer à la suite
de s auts de
page déterminés par le changement de libellés d'une
colonne.
3) que l'impression puisse tenir compte de "lignes à
répéter en hau t" par
exemple les champs de colonnes (AB, champ a, champ b; CD, champ c, champ d).

merci de vos réponses





Bonjour ,
merci de m'indiquer comment puis-je vous envoyer un fichier en exemple.
bonne journée
Avatar
LSteph
Bonjour,

As-tu essayé ce que proposé ? Qu'en est-il ?

pour ensuite proposer une piece dans ce fil, passer par là http://www.cjo int.com
et déposer le fichier tu obtiens le lien à coller ainsi:

http://cjoint.com/?jjjJWuPfIK

--
lSteph


On 9 sep, 09:06, intactsaphir wrote:
LSteph a écrit le 08/09/2009 à 16h18 :



> Bonjour,

> Un exemple ..suppose tous titres en colonne1 et tous enregistrements
> renseignés  en colonne1:

> Sub mispg()
> Dim L As String, T As String, i As Long
> L = [a65536].End(xlUp).Address
> T = [iv1].End(xlToLeft).Address
> For i = Range(L).Row To 2 Step -1
> With [a:a].Cells
> If .Item(i) <> .Item(i).Offset(-1, 0) Then _
> ActiveSheet.HPageBreaks.Add Before:=.Item(i)
> End With
> Next i
> With ActiveSheet.PageSetup
> .PrintArea = L & ":" & T
> .PrintTitleColumns = ActiveSheet.Columns(1).Address
> .PrintTitleRows = ActiveSheet.Rows(1).Address
> End With

> End Sub

> 'lSteph

> On 8 sep, 14:46, intactsaphir  wrote:
>> Bonjour,
>> Une feuille de saisie représente un ensemble de tableaux les uns
>> à la  suite des
>> autres.
>> Je souhaiterais en vba:
>> 1) définir la zone d'impression
>> 2) que l'impression de ces données puisse s'effectuer à la suite
>> de s auts de
>> page déterminés par le changement de libellés d'une
>> colonne.
>> 3) que l'impression puisse tenir compte de "lignes à
>> répéter en hau t" par
>> exemple les champs de colonnes (AB, champ a, champ b; CD, champ c, cha mp
d).

>> merci de vos réponses

Bonjour ,
merci de m'indiquer comment puis-je vous envoyer un fichier en exemple.
bonne journée- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Avatar
intactsaphir
LSteph a écrit le 09/09/2009 à 09h37 :
Bonjour,

As-tu essayé ce que proposé ? Qu'en est-il ?

pour ensuite proposer une piece dans ce fil, passer par là
http://www.cjo int.com
et déposer le fichier tu obtiens le lien à coller ainsi:

http://cjoint.com/?jjjJWuPfIK

--
lSteph


On 9 sep, 09:06, intactsaphir wrote:
LSteph a écrit le 08/09/2009 à 16h18 :



> Bonjour,

> Un exemple ..suppose tous titres en colonne1 et tous enregistrements
> renseignés  en colonne1:

> Sub mispg()
> Dim L As String, T As String, i As Long
> L = [a65536].End(xlUp).Address
> T = [iv1].End(xlToLeft).Address
> For i = Range(L).Row To 2 Step -1
> With [a:a].Cells
> If .Item(i) <> .Item(i).Offset(-1, 0) Then _
> ActiveSheet.HPageBreaks.Add Before:=.Item(i)
> End With
> Next i
> With ActiveSheet.PageSetup
> .PrintArea = L & ":" & T
> .PrintTitleColumns = ActiveSheet.Columns(1).Address
> .PrintTitleRows = ActiveSheet.Rows(1).Address
> End With

> End Sub

> 'lSteph

> On 8 sep, 14:46, intactsaphir  wrote:
>> Bonjour,
>> Une feuille de saisie représente un ensemble de tableaux les
uns
>> à la  suite des
>> autres.
>> Je souhaiterais en vba:
>> 1) définir la zone d'impression
>> 2) que l'impression de ces données puisse s'effectuer à
la suite
>> de s auts de
>> page déterminés par le changement de libellés
d'une
>> colonne.
>> 3) que l'impression puisse tenir compte de "lignes à
>> répéter en hau t" par
>> exemple les champs de colonnes (AB, champ a, champ b; CD, champ c,
cha mp
d).

>> merci de vos réponses

Bonjour ,
merci de m'indiquer comment puis-je vous envoyer un fichier en exemple.
bonne journée- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -





Bonjour Lsteph

J'ai testé votre premier envoi et j'essaye de comprendre vos instructions en y insérant des commentaires.
Le problème est que dans mon premier post j'indiquais qu'il y avait plusieurs tableaux les uns à la suite des autres avec des champs différents...
Voici le fichier
http://cjoint.com/data/jjkvmjoWjE.htm

En ce qui concerne votre fichier la commande test ne fonctionne pas. J'ai du mettre en commentaire '.Orientation = xlLandscape

Merci de m'aider dans la réalisation de ma demande.
Avatar
intactsaphir
intactsaphir a écrit le 09/09/2009 à 10h31 :
LSteph a écrit le 09/09/2009 à 09h37 :
Bonjour,

As-tu essayé ce que proposé ? Qu'en est-il ?

pour ensuite proposer une piece dans ce fil, passer par là
http://www.cjo int.com
et déposer le fichier tu obtiens le lien à coller ainsi:

http://cjoint.com/?jjjJWuPfIK

--
lSteph


On 9 sep, 09:06, intactsaphir wrote:
LSteph a écrit le 08/09/2009 à 16h18 :



> Bonjour,

> Un exemple ..suppose tous titres en colonne1 et tous enregistrements
> renseignés  en colonne1:

> Sub mispg()
> Dim L As String, T As String, i As Long
> L = [a65536].End(xlUp).Address
> T = [iv1].End(xlToLeft).Address
> For i = Range(L).Row To 2 Step -1
> With [a:a].Cells
> If .Item(i) <> .Item(i).Offset(-1, 0) Then _
> ActiveSheet.HPageBreaks.Add Before:=.Item(i)
> End With
> Next i
> With ActiveSheet.PageSetup
> .PrintArea = L & ":" & T
> .PrintTitleColumns = ActiveSheet.Columns(1).Address
> .PrintTitleRows = ActiveSheet.Rows(1).Address
> End With

> End Sub

> 'lSteph

> On 8 sep, 14:46, intactsaphir  wrote:
>> Bonjour,
>> Une feuille de saisie représente un ensemble de tableaux les
uns
>> à la  suite des
>> autres.
>> Je souhaiterais en vba:
>> 1) définir la zone d'impression
>> 2) que l'impression de ces données puisse s'effectuer
à
la suite
>> de s auts de
>> page déterminés par le changement de libellés
d'une
>> colonne.
>> 3) que l'impression puisse tenir compte de "lignes à
>> répéter en hau t" par
>> exemple les champs de colonnes (AB, champ a, champ b; CD, champ c,
cha mp
d).

>> merci de vos réponses

Bonjour ,
merci de m'indiquer comment puis-je vous envoyer un fichier en exemple.
bonne journée- Masquer le texte des messages précédents
-

- Afficher le texte des messages précédents -







Bonjour Lsteph

J'ai testé votre premier envoi et j'essaye de comprendre vos
instructions en y insérant des commentaires.
Le problème est que dans mon premier post j'indiquais qu'il y avait
plusieurs tableaux les uns à la suite des autres avec des champs
différents...
Voici le fichier
http://cjoint.com/data/jjkvmjoWjE.htm

En ce qui concerne votre fichier la commande test ne fonctionne pas. J'ai du
mettre en commentaire '.Orientation = xlLandscape

Merci de m'aider dans la réalisation de ma demande.


Re:
merci de ne pas prendre en compte la remarque suivante de mon dernier post:
"En ce qui concerne votre fichier la commande test ne fonctionne pas. J'ai du
mettre en commentaire '.Orientation = xlLandscape"

car la macro instruction fonctionne, ,j'ai du faire une erreur de manipulation.
Avatar
LSteph
Bonjour,

Ton fichier éclaire un peu mieux ma compréhension sur certains points
qui n'entraient pas dans ma logique
(Notamment les titres me semblaient concerner Ligne 1 ou 2 mais pas
les colonnes AB ou CD
qui en fait sont un texte entré dans la ccellule un intitulé de
colonne)

Ce que j'ai proposé fonctionne avec un tableau "normal" mais ne
convient pas dans ce cas
(Je supposais que tes "plusieurs tableaux" naissaient simplement du
fait du changement de nom en colonne A)

Ainsi ne prévoit pas que l'on vienne insérer d'autres titres en plein
milieu!!
Le handicap nait de la mauvaise disposition qu'il en résulte par
rapport au principe d'impression des titres
3) que l'impression puisse tenir compte de "lignes à répéter en haut


qui prévoit la répétition de la(es) ligne(s) choisies sur tout les
blocs à imprimer consécutivement.

Ce sera donc toujours AB qui sera répété (C'est ainsi que c'est pré vu
dans excel et pas autrement)
de plus l'interposition de ces autres titres fait que l'on ne peut
plus se baser aussi simplement sur le principe:
2) que l'impression de ces données puisse s'effectuer à la suite de sa uts de
page déterminés par le changement de libellés d'une colonne.



Au vu donc de tout cela, il me semble devoir rechercher une autre
solution.

@+

--
lSteph

On 9 sep, 10:46, intactsaphir wrote:
intactsaphir a écrit le 09/09/2009 à 10h31 :



> LSteph a écrit le 09/09/2009 à 09h37 :
>> Bonjour,

>> As-tu essayé ce que proposé ? Qu'en est-il ?

>> pour ensuite proposer une piece dans ce fil, passer par là
>>http://www.cjoint.com
>> et déposer le fichier tu obtiens le lien à coller ainsi:

>>http://cjoint.com/?jjjJWuPfIK

>> --
>> lSteph

>> On 9 sep, 09:06, intactsaphir  wrote:
>>> LSteph a écrit le 08/09/2009 à 16h18 :

>>> > Bonjour,

>>> > Un exemple ..suppose tous titres en colonne1 et tous enregistrement s
>>> > renseignés  en colonne1:

>>> > Sub mispg()
>>> > Dim L As String, T As String, i As Long
>>> > L = [a65536].End(xlUp).Address
>>> > T = [iv1].End(xlToLeft).Address
>>> > For i = Range(L).Row To 2 Step -1
>>> > With [a:a].Cells
>>> > If .Item(i) <> .Item(i).Offset(-1, 0) Then _
>>> > ActiveSheet.HPageBreaks.Add Before:=.Item(i)
>>> > End With
>>> > Next i
>>> > With ActiveSheet.PageSetup
>>> > .PrintArea = L & ":" & T
>>> > .PrintTitleColumns = ActiveSheet.Columns(1).Address
>>> > .PrintTitleRows = ActiveSheet.Rows(1).Address
>>> > End With

>>> > End Sub

>>> > 'lSteph

>>> > On 8 sep, 14:46, intactsaphir  wrote:
>>> >> Bonjour,
>>> >> Une feuille de saisie représente un ensemble de tableaux les
>>> uns
>>> >> à la  suite des
>>> >> autres.
>>> >> Je souhaiterais en vba:
>>> >> 1) définir la zone d'impression
>>> >> 2) que l'impression de ces données puisse s'effectuer
>>> à
>>> la suite
>>> >> de s auts de
>>> >> page déterminés par le changement de libellés
>>> d'une
>>> >> colonne.
>>> >> 3) que l'impression puisse tenir compte de "lignes à
>>> >> répéter en hau t" par
>>> >> exemple les champs de colonnes (AB, champ a, champ b; CD, champ c,
>>> cha mp
>>> d).

>>> >> merci de vos réponses

>>> Bonjour ,
>>> merci de m'indiquer comment puis-je vous envoyer un fichier en exempl e.
>>> bonne journée- Masquer le texte des messages précédents
>>> -

>>> - Afficher le texte des messages précédents -

> Bonjour Lsteph

> J'ai testé votre premier envoi et j'essaye de comprendre vos
> instructions en y insérant des commentaires.
> Le problème est que dans mon premier post j'indiquais qu'il y avait
> plusieurs tableaux les uns à la suite des autres avec des champs
> différents...
> Voici le fichier
>http://cjoint.com/data/jjkvmjoWjE.htm

> En ce qui concerne votre fichier la commande test ne fonctionne  pas. J'ai
du
> mettre en commentaire '.Orientation = xlLandscape

> Merci de m'aider dans la réalisation de ma demande.

Re:
merci de ne pas prendre en compte la remarque suivante de mon dernier pos t:
"En ce qui concerne votre fichier la commande test ne fonctionne pas. J'a i du
mettre en commentaire '.Orientation = xlLandscape"

car la macro instruction fonctionne, ,j'ai du faire une erreur de manipul ation.- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Avatar
LSteph
re,

(au passage je rectifie pour plus de compréhension les commentaires
que tu avais insérés dans le code

Sub mispg()
Dim L As String, T As String, i As Long

'1) délimitation de la zone à imprimer
L = [A65536].End(xlUp).Address ' adresse absolue de la dernire cellule
en colonne A du tableau
T = [IV2].End(xlToLeft).Offset(-1).Address 'ladresse absolue de la
première cellule la plus à DROITE du tableau

'2) sauts de pages lorsque le libellé change
For i = Range(L).Row To 2 Step -1
With [a:a].Cells 'avec la colonne a:a
If .Item(i) <> .Item(i).Offset(-1, 0) Then
ActiveSheet.HPageBreaks.Add Before:=.Item(i)
'si le contenu de la cellule (i) est différent de celui de
la cellule supérieure (-1)
'alors saut de page entre les deux
End With
Next i

With ActiveSheet.PageSetup
.PrintArea = L & ":" & T
.PrintTitleColumns = ActiveSheet.Columns(1).Address
.PrintTitleRows = ActiveSheet.Rows(1).Address

End With

End Sub

'...je regarde cela cet aprem quand je trouve un moment, puisque en
toute logique cela ne se prette pas à ta feuillle
J'ai une piste si la disposition est toujours ainsi de deux colonnes
et que toutes les cellules sont toujours remplies
sauf la première cell de chaque bloc e n colonne 2

Merci entre temps de préciser si c'est bien toujours le cas!

@+

--
lSteph

On 9 sep, 10:46, intactsaphir wrote:
intactsaphir a écrit le 09/09/2009 à 10h31 :



> LSteph a écrit le 09/09/2009 à 09h37 :
>> Bonjour,

>> As-tu essayé ce que proposé ? Qu'en est-il ?

>> pour ensuite proposer une piece dans ce fil, passer par là
>>http://www.cjoint.com
>> et déposer le fichier tu obtiens le lien à coller ainsi:

>>http://cjoint.com/?jjjJWuPfIK

>> --
>> lSteph

>> On 9 sep, 09:06, intactsaphir  wrote:
>>> LSteph a écrit le 08/09/2009 à 16h18 :

>>> > Bonjour,

>>> > Un exemple ..suppose tous titres en colonne1 et tous enregistrement s
>>> > renseignés  en colonne1:

>>> > Sub mispg()
>>> > Dim L As String, T As String, i As Long
>>> > L = [a65536].End(xlUp).Address
>>> > T = [iv1].End(xlToLeft).Address
>>> > For i = Range(L).Row To 2 Step -1
>>> > With [a:a].Cells
>>> > If .Item(i) <> .Item(i).Offset(-1, 0) Then _
>>> > ActiveSheet.HPageBreaks.Add Before:=.Item(i)
>>> > End With
>>> > Next i
>>> > With ActiveSheet.PageSetup
>>> > .PrintArea = L & ":" & T
>>> > .PrintTitleColumns = ActiveSheet.Columns(1).Address
>>> > .PrintTitleRows = ActiveSheet.Rows(1).Address
>>> > End With

>>> > End Sub

>>> > 'lSteph

>>> > On 8 sep, 14:46, intactsaphir  wrote:
>>> >> Bonjour,
>>> >> Une feuille de saisie représente un ensemble de tableaux les
>>> uns
>>> >> à la  suite des
>>> >> autres.
>>> >> Je souhaiterais en vba:
>>> >> 1) définir la zone d'impression
>>> >> 2) que l'impression de ces données puisse s'effectuer
>>> à
>>> la suite
>>> >> de s auts de
>>> >> page déterminés par le changement de libellés
>>> d'une
>>> >> colonne.
>>> >> 3) que l'impression puisse tenir compte de "lignes à
>>> >> répéter en hau t" par
>>> >> exemple les champs de colonnes (AB, champ a, champ b; CD, champ c,
>>> cha mp
>>> d).

>>> >> merci de vos réponses

>>> Bonjour ,
>>> merci de m'indiquer comment puis-je vous envoyer un fichier en exempl e.
>>> bonne journée- Masquer le texte des messages précédents
>>> -

>>> - Afficher le texte des messages précédents -

> Bonjour Lsteph

> J'ai testé votre premier envoi et j'essaye de comprendre vos
> instructions en y insérant des commentaires.
> Le problème est que dans mon premier post j'indiquais qu'il y avait
> plusieurs tableaux les uns à la suite des autres avec des champs
> différents...
> Voici le fichier
>http://cjoint.com/data/jjkvmjoWjE.htm

> En ce qui concerne votre fichier la commande test ne fonctionne  pas. J'ai
du
> mettre en commentaire '.Orientation = xlLandscape

> Merci de m'aider dans la réalisation de ma demande.

Re:
merci de ne pas prendre en compte la remarque suivante de mon dernier pos t:
"En ce qui concerne votre fichier la commande test ne fonctionne pas. J'a i du
mettre en commentaire '.Orientation = xlLandscape"

car la macro instruction fonctionne, ,j'ai du faire une erreur de manipul ation.- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Avatar
LSteph
'...je regarde cela cet aprem quand je trouve un moment, puisque en
toute logique cela ne se prette pas à ta feuillle
J'ai une piste si la disposition est toujours ainsi de deux colonnes
et que toutes les cellules sont toujours remplies
sauf la première cell de chaque bloc e n colonne 2


Merci entre temps de préciser si c'est bien toujours le cas!


@+


--
lSteph
Avatar
intactsaphir
LSteph a écrit le 09/09/2009 à 12h32 :
'...je regarde cela cet aprem quand je trouve un moment, puisque en
toute logique cela ne se prette pas à ta feuillle
J'ai une piste si la disposition est toujours ainsi de deux colonnes
et que toutes les cellules sont toujours remplies
sauf la première cell de chaque bloc e n colonne 2


Merci entre temps de préciser si c'est bien toujours le cas!


@+


--
lSteph


Re
merci pour les annotations
les colonnes sont au nombre de 9
les lignes sont indéterminées
Avatar
LSteph
Sub mispg()
Dim L As Long, T As Long, i As Long, Maplage As Range


L = [A65536].End(xlUp).Row
T = Range("B" & L).End(xlUp).Row - 1


Do While T > 0

Set Maplage = Range(Cells(L, 1), Cells(T + 2, 9))


With ActiveSheet.PageSetup
.PrintArea = Maplage.Address
.PrintTitleColumns = Maplage.Columns(1).Address
.PrintTitleRows = Range(T & ":" & T + 1).Address
.Orientation = xlLandscape
End With
For i = L To T + 3 Step -1
With Range("a:a") 'avec la colonne
If .Cells(i) <> .Cells(i - 1) Then
ActiveSheet.HPageBreaks.Add Before:=.Cells(i)
End With
Next i
ActiveSheet.PrintPreview
L = T - 1
On Error GoTo fin
T = Range("B" & L).End(xlUp).Row - 1
Set Maplage = Nothing
Loop
fin:

End Sub
1 2