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

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

10 réponses
Avatar
Pierre F.
Bonjour;

J'ai un fichier de 310 lignes sur 4 colonnes

Je souhaiterais l'imprimer sur A4 vertical mais de fa=E7on =E0 =E9conomis=
er de=20
la place en 2 colonnes (fa=E7on "Word" :-)

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

L'aspect final devrait =EAtre:

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

pour la page 1


Les lignes No 1 et 2 sont dans l'ent=EAte
Le contenu du fichier commence =E0 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=E7u d'impression plut=F4=
t=20
que dans l'impression directe.
De plus, il faudrait qu'apr=E8s cette impression, le fichier reprenne sa =

forme habituelle :-)

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

pas =E0 les faire tourner.

Je sais que je demande beaucoup... mais je sais que vous =EAtes non=20
seulement bons, mais excellents :-))

Cordialement,
Pierre F.

10 réponses

Avatar
Daniel
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." a écrit dans le message de news:
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.
Avatar
JB
Bonjour,

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

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

JB

On 2 mar, 14:20, "Pierre F." wrote:
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.


Avatar
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.

Avatar
Pierre F.
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.

Avatar
JB
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." wrote:

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.



Avatar
Daniel
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
Avatar
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.

Avatar
JB
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." wrote:

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.



Avatar
Pierre F.
http://cjoint.com/?dcu6PVzi17



C'est magique!!

merci!

Pierre F.

Avatar
Pierre F.

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.