Imprimer 4 colonnes excel sur A4 en 2 colonnes "Word"

Le
Pierre F.
Bonjour;

J'ai un fichier de 310 lignes sur 4 colonnes

Je souhaiterais l'imprimer sur A4 vertical mais de façon à économis=
er de
la place en 2 colonnes (façon "Word" :-)

Je le fais actuellement "à la main" mais c'est lourd.

L'aspect final devrait être:

A B C D A B C D
TitreTitreTitreTitre TitreTitreTitreTitre
No Auteur Titre Année No Auteur Titre Année
1 Blabla Blibli 2007 66 Bloblo Blublu 1998
2 67
3 68
4 69


pour la page 1


Les lignes No 1 et 2 sont dans l'entête
Le contenu du fichier commence à la ligne 3

La page 2 pourrait commencer au No 131 (-> env 130 lignes par page)

Je souhaiterais que la macro aboutisse dans l'aperçu d'impression plutô=
t
que dans l'impression directe.
De plus, il faudrait qu'après cette impression, le fichier reprenne sa =

forme habituelle :-)

J'ai pu trouver quelques exemples de macros sur le net, mais je n'arrive =

pas à les faire tourner.

Je sais que je demande beaucoup mais je sais que vous êtes non
seulement bons, mais excellents :-))

Cordialement,
Pierre F.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel
Le #4358171
Bonjour.
Essaie :

Sub test()
Dim Ctr1 As Integer, Ctr2 As Integer
Ctr2 = Range("A65536").End(xlUp).Row / 2
Ctr1 = Range("A65536").End(xlUp).Row - Ctr2
Range(Cells(Ctr1 + 1, 1), Cells(Ctr1 + Ctr2, 4)).Cut Cells(1, 5)
End Sub

Cordialement.
Daniel
"Pierre F." 4463e$45e82482$55da2a7a$
Bonjour;

J'ai un fichier de 310 lignes sur 4 colonnes

Je souhaiterais l'imprimer sur A4 vertical mais de façon à économiser de
la place en 2 colonnes (façon "Word" :-)

Je le fais actuellement "à la main" mais c'est lourd.

L'aspect final devrait être:

A B C D A B C D
TitreTitreTitreTitre TitreTitreTitreTitre
No Auteur Titre Année No Auteur Titre Année
1 Blabla Blibli 2007 66 Bloblo Blublu 1998
2 67
3 68
4 69
... ...

pour la page 1


Les lignes No 1 et 2 sont dans l'entête
Le contenu du fichier commence à la ligne 3

La page 2 pourrait commencer au No 131... (-> env 130 lignes par page)

Je souhaiterais que la macro aboutisse dans l'aperçu d'impression plutôt
que dans l'impression directe.
De plus, il faudrait qu'après cette impression, le fichier reprenne sa
forme habituelle :-)

J'ai pu trouver quelques exemples de macros sur le net, mais je n'arrive
pas à les faire tourner.

Je sais que je demande beaucoup... mais je sais que vous êtes non
seulement bons, mais excellents :-))

Cordialement,
Pierre F.
JB
Le #4358121
Bonjour,

Voir onglets 'conversion tableau' et 'imprime colonnes'.

http://boisgontierj.free.fr/fichiers/jb-impressions.zip

JB

On 2 mar, 14:20, "Pierre F."
Bonjour;

J'ai un fichier de 310 lignes sur 4 colonnes

Je souhaiterais l'imprimer sur A4 vertical mais de façon à économis er de
la place en 2 colonnes (façon "Word" :-)

Je le fais actuellement "à la main" mais c'est lourd.

L'aspect final devrait être:

A B C D A B C D
TitreTitreTitreTitre TitreTitreTitreTitre
No Auteur Titre Année No Auteur Titre Année
1 Blabla Blibli 2007 66 Bloblo Blublu 1998
2 67
3 68
4 69
... ...

pour la page 1

Les lignes No 1 et 2 sont dans l'entête
Le contenu du fichier commence à la ligne 3

La page 2 pourrait commencer au No 131... (-> env 130 lignes par page)

Je souhaiterais que la macro aboutisse dans l'aperçu d'impression plut ôt
que dans l'impression directe.
De plus, il faudrait qu'après cette impression, le fichier reprenne sa
forme habituelle :-)

J'ai pu trouver quelques exemples de macros sur le net, mais je n'arrive
pas à les faire tourner.

Je sais que je demande beaucoup... mais je sais que vous êtes non
seulement bons, mais excellents :-))

Cordialement,
Pierre F.


Pierre F.
Le #4358051
Bonjour,
Voir onglets 'conversion tableau' et 'imprime colonnes'.
http://boisgontierj.free.fr/fichiers/jb-impressions.zip


Merci pour ta réponse;

La macro me pose un problème; elle bloque à la ligne:


*nbenreg = sheets(FeuilleConvertir).Cells(ligneSource,
1).CurrentRegion.Rows.Count*

Est-ce dû au fait que mes onglets ont des noms (en l'occurence *Alphab*
et *Numer*) ??

avec le message: *L'indice n'appartient pas à la sélection*

Cordialement,
Pierre F.

Pierre F.
Le #4358041
Bonjour.
Essaie :

Sub test()
Dim Ctr1 As Integer, Ctr2 As Integer
Ctr2 = Range("A65536").End(xlUp).Row / 2
Ctr1 = Range("A65536").End(xlUp).Row - Ctr2
Range(Cells(Ctr1 + 1, 1), Cells(Ctr1 + Ctr2, 4)).Cut Cells(1, 5)
End Sub


merci; c'est presque ça... mais :-(

a) Je souhaiterais décaler d'une colonne le déplacement (commencer en F)
b) Qu'il n'écrive rien sur les lignes 1 et 2

:-) que dois-je modifier ?

merci.

Cordialement,
Pierre F.

JB
Le #4357991
Il faut adapter le nom de feuille à convertir et la hauteur de page

Sub Imprime()
FeuilleConvertir = "ConversionTableau" ' a
adapter
ligneSource = 2 ' ligne de départ
largeurSource = 4 ' largeur source (nb colonnnes)
hpageDest = 30 ' hauteur page destination ' a
adapter
ncolDest = 2 ' nb colonnes destintation
ligneDest = 2
'--------
nbenreg = Sheets(FeuilleConvertir).Cells(ligneSource,
1).CurrentRegion.Rows.Count
Sheets("edition").ResetAllPageBreaks
Sheets("edition").Cells.Clear
For col = 1 To ncolDest ' en têtes de colonne
Sheets(FeuilleConvertir).Cells(ligneSource - 1, 1).Resize(1,
largeurSource).Copy _
Sheets("edition").Cells(1, (col - 1) * largeurSource + 1)
Next col
'--
Do While Sheets(FeuilleConvertir).Cells(ligneSource, 1) <> ""
For col = 1 To ncolDest
Cells(ligneSource, 1).Resize(hpageDest, largeurSource).Copy _
Sheets("edition").Cells(ligneDest, (col - 1) * largeurSource +
1)
Sheets("edition").Cells(ligneDest, (col - 1) * largeurSource +
1).Resize(hpageDest, largeurSource).BorderAround Weight:=xlThin
ligneSource = ligneSource + hpageDest
Next
Sheets("edition").HPageBreaks.Add Before:Îlls(ligneDest +
hpageDest, 1)
ligneDest = ligneDest + hpageDest
Loop
Sheets("edition").Select
ActiveSheet.PrintPreview
End Sub

JB


On 2 mar, 17:18, "Pierre F."

Bonjour,
Voir onglets 'conversion tableau' et 'imprime colonnes'.
http://boisgontierj.free.fr/fichiers/jb-impressions.zip


Merci pour ta réponse;

La macro me pose un problème; elle bloque à la ligne:

*nbenreg = sheets(FeuilleConvertir).Cells(ligneSource,
1).CurrentRegion.Rows.Count*

Est-ce dû au fait que mes onglets ont des noms (en l'occurence *Alphab*
et *Numer*) ??

avec le message: *L'indice n'appartient pas à la sélection*

Cordialement,
Pierre F.



Daniel
Le #4357981
merci; c'est presque ça... mais :-(

a) Je souhaiterais décaler d'une colonne le déplacement (commencer en F)
b) Qu'il n'écrive rien sur les lignes 1 et 2

:-) que dois-je modifier ?

Sub test()
Dim Ctr1 As Integer, Ctr2 As Integer
Ctr2 = Range("A65536").End(xlUp).Row / 2
Ctr1 = Range("A65536").End(xlUp).Row - Ctr2
Range(Cells(Ctr1 + 1, 1), Cells(Ctr1 + Ctr2, 4)).Cut Cells(1, 6)
Range("A1:A2").EntireRow.Insert
End Sub

Daniel
Pierre F.
Le #4357851
Il faut adapter le nom de feuille à convertir et la hauteur de page


OK; ça marche maintenant :-)...
On est pas loin de la perfection...

mais bien sûr, plus on avance plus ça se complique :-))

La macro me fait automatiquement des bordures ... ce qui est très bien !!

Juste que souhaiterais que les bordures latérales n'existent pas et que
celle du milieu soit plus épaisse.
Bien sûr je sais le faire à la main :-) mais si j'enregistre mes ges te
à la main, la macro devient tout de suite plus lourde!

Et je n'ai rien trouvé dans ta procédure qui pourrait concerner
l'épaisseur des bordures... mais il est vrai que je manie très mal ce
langage :-)

Cordialement,
Pierre F.

JB
Le #4357681
http://cjoint.com/?dcu6PVzi17

Sub Imprime()
FeuilleConvertir = "ConversionTableau"
ligneSource = 2 ' ligne de départ
largeurSource = 4 ' largeur source (nb colonnnes)
hpageDest = 30 ' hauteur page destination
ncolDest = 2 ' nb colonnes desintation
ligneDest = 2
'--------
nbenreg = Sheets(FeuilleConvertir).Cells(ligneSource,
1).CurrentRegion.Rows.Count
Sheets("edition").ResetAllPageBreaks
Sheets("edition").Cells.Clear
For col = 1 To ncolDest ' en têtes de colonne
Sheets(FeuilleConvertir).Cells(ligneSource - 1, 1).Resize(1,
largeurSource).Copy _
Sheets("edition").Cells(1, (col - 1) * largeurSource + 1)
Next col
'--
Do While Sheets(FeuilleConvertir).Cells(ligneSource, 1) <> ""
For col = 1 To ncolDest
Cells(ligneSource, 1).Resize(hpageDest, largeurSource).Copy _
Sheets("edition").Cells(ligneDest, (col - 1) * largeurSource +
1)
Sheets("edition").Cells(ligneDest, (col - 1) * _
largeurSource + 1).Resize(hpageDest, largeurSource).BorderAround
Weight:=xlMedium
ligneSource = ligneSource + hpageDest
Next
'--
Sheets("edition").Cells(ligneDest, 1).Resize(hpageDest,
largeurSource * ncolDest).Borders(xlEdgeTop).LineStyle = xlNone
Sheets("edition").Cells(ligneDest, 1).Resize(hpageDest,
largeurSource * ncolDest).Borders(xlEdgeLeft).LineStyle = xlNone
Sheets("edition").Cells(ligneDest, 1).Resize(hpageDest,
largeurSource * ncolDest).Borders(xlEdgeRight).LineStyle = xlNone
Sheets("edition").Cells(ligneDest, 1).Resize(hpageDest,
largeurSource * ncolDest).Borders(xlEdgeBottom).LineStyle = xlNone
'--
Sheets("edition").HPageBreaks.Add Before:Îlls(ligneDest +
hpageDest, 1)
ligneDest = ligneDest + hpageDest
Loop
Sheets("edition").Select
ActiveSheet.PrintPreview
End Sub

JB


On 2 mar, 18:52, "Pierre F."

Il faut adapter le nom de feuille à convertir et la hauteur de page


OK; ça marche maintenant :-)...
On est pas loin de la perfection...

mais bien sûr, plus on avance plus ça se complique :-))

La macro me fait automatiquement des bordures ... ce qui est très bien !!

Juste que souhaiterais que les bordures latérales n'existent pas et que
celle du milieu soit plus épaisse.
Bien sûr je sais le faire à la main :-) mais si j'enregistre mes ges te
à la main, la macro devient tout de suite plus lourde!

Et je n'ai rien trouvé dans ta procédure qui pourrait concerner
l'épaisseur des bordures... mais il est vrai que je manie très mal ce
langage :-)

Cordialement,
Pierre F.



Pierre F.
Pierre F.
Le #4357571

Sub test()
Dim Ctr1 As Integer, Ctr2 As Integer
Ctr2 = Range("A65536").End(xlUp).Row / 2
Ctr1 = Range("A65536").End(xlUp).Row - Ctr2
Range(Cells(Ctr1 + 1, 1), Cells(Ctr1 + Ctr2, 4)).Cut Cells(1, 6)
Range("A1:A2").EntireRow.Insert
End Sub


Merci !

En définitive, la macro proposée par JB correspond mieux au contexte de
mon fichier.
Je garde la tienne pour d'autres occasions :-)

Cordialement,
Pierre F.

Publicité
Poster une réponse
Anonyme