Comment imprimer une feuille Excel dans une mise en page multi-colonnes?

13

Dans ma feuille Excel, j'ai trois colonnes A, B, C qui sont très fines, mais ont beaucoup de lignes (> 500). Maintenant, si j'imprime ceci, j'obtiens 10 pages qui sont presque vides. Ce n'est qu'à la bordure gauche de chaque page que je vois ces trois colonnes.

Ce que je veux faire, c'est imprimer cette feuille entière dans une disposition multicolonne. 2 ou 3 colonnes par page suffiraient. Actuellement, je le fais en copiant les valeurs d'Excel, en l'insérant dans un document Word, puis en utilisant la fonction de mise en page multi-colonnes de Word. N'y a-t-il pas un moyen d'y parvenir directement dans Excel?

Pour clarifier mon problème: actuellement mes pages ressemblent à ça

A B C
A B C
A B C
A B C
. . .

Mais ce que je veux c'est ceci:

A B C     A B C     A B C
A B C     A B C     A B C
A B C     A B C     A B C
. . .     . . .     . . .
RoflcoptrException
la source

Réponses:

10

Je ne pense pas qu'Excel puisse le faire. Une solution de contournement possible consiste à utiliser Microsoft Word et à serpenter les colonnes autour: Comment serpenter les colonnes pour utiliser moins de pages

Utilisation de MS Word pour serpenter des colonnes (#msword)

C'est probablement le plus facile à utiliser pour une utilisation unique, car je n'ai pas mis de boîte de dialogue dans ma macro Excel décrite plus loin.

  1. Sélectionnez et copiez les colonnes de la feuille de calcul Excel.
  2. Coller dans Word, cela prend quelques instants
  3. Sélectionnez les lignes à répéter en haut du tableau, puis indiquez-le dans Word avec tableau -> Lignes à répéter
  4. Sélectionnez le tableau entier à l'aide d'une ancre ou sélectionnez des cellules dans le tableau, puis Tableau -> Sélectionner -> Tableau
  5. Indiquez le nombre de lignes à l'aide du bouton colonnes, ou Format -> Colonnes si vous souhaitez plus de contrôle sur le placement

Cet exemple fonctionne bien. La poste offre également d'autres possibilités.

LarsTech
la source
4

Si vous avez un tableau source appelé "datatable", placez cette formule sur une feuille supplémentaire dans chaque cellule (où les données imprimées doivent apparaître):

=OFFSET(datatable!$A$2;(ROW()-2)+((COLUMN()-1-MOD(COLUMN()-1;3))/3*4);MOD(COLUMN()-1;3))

( Ci - dessus est traduit de l' allemand en anglais La formule testée est allemand. =BEREICH.VERSCHIEBEN(datatable!$A$2;(ZEILE()-2)+((SPALTE()-1-REST(SPALTE()-1;3))/3*4);REST(SPALTE()-1;3)) )

résultat attendu:

Cela transformera le contenu de la feuille "datatable":

A1 B1 C1
A2 B2 C2
A3 B3 C3
A4 B4 C4
A5 B5 C5
A6 B6 C6
...

dans:

A1 B1 C1    A5 B5 C5    ...
A2 B2 C2    A6 B6 C6    ...
A3 B3 C3    ...
A4 B4 C4    ...

Explication:

Bases:

Par exemple, OFFSET( datatable!$A$2; 3; 4 )référence la cellule par rapport à $A$2, 3 lignes vers le bas, 4 colonnes vers la droite.

ROW()et COLUMN()sont des nombres, représentant la position de la cellule actuelle dans la feuille courante (par exemple $A$1= colonne 1 / ligne 1, $C$2= colonne 3 / ligne 2).

Le (-1)partout est nécessaire car nous utilisons des décalages, et la première ligne et colonne est 1, mais nous voulons que la première cellule référencée soit $A$2, pas $A$2plus le décalage 1.

Le (ROW()-2)est pour un titre dans la table de sortie / d'impression (il doit être -1 si vous n'avez pas de titre).
$A$2est pour un titre dans la source "datatable". Sans titre, il doit être référencé avec $A$1(au lieu de $A$2).

Détails:

Le 3ème paramètre OFFSET(...;...;MOD(COLUMN()-1;3))est le décalage de colonne , il fera toujours référence à l'une des 3 premières colonnes de la source "datatable".
C'est $A$2plus le décalage de colonne 0, 1, 2, 0, 1, 2, 0, 1, 2, ...

Dans le 2ème paramètre, OFFSET(...; (ROW()-2) + ((COLUMN()-1-MOD(COLUMN()-1;3))/3*4) ;...)sélectionne le décalage de ligne .
Fondamentalement, le calcul ici est y + x * 4.

4 est le nombre de lignes que vous souhaitez afficher.
3 est le nombre de colonnes dans la source "datatable".

Le x est composé de la colonne et le module 3.
COLUMN()-1est égal à 0, 1, 2, 3, ... et ainsi de suite.
MOD(COLUMN()-1;3)sera 0, 1, 2, 0, 1, 2, 0, 1, 2, ...

COLUMN()-1-MOD(COLUMN()-1;3)sera 0, 3, 6, 9, ... et ainsi de suite, où la valeur ne change que toutes les 3 colonnes.
La division par 3 donnera 0, 1, 2, 3, ...
La multiplication par 4 donnera 0, 4, 8, 12, ...

(Pour des explications sur Modulo , voir aussi MOD()dans l'aide d'Excel, ou le fonctionnement de modulo dans wikipedia )

(Merci à Jake Kacher, pour l'idée de base)

kicia
la source
1

Vous pouvez utiliser une formule simple:

=OFFSET(Sheet1!$A$1,(ROW()-2)*5+COLUMN(),0)

pour laisser les données circuler horizontalement sur 5 colonnes.
Ensuite, vous pouvez sélectionner la taille de la page, imprimer la première ligne sur chaque page, etc.
Simple, soigné, aucun VBA requis.

Jake Kacher
la source
3
Probablement utile pour un gourou Excel - mais je n'ai aucune idée où je mettrais cela ou comment l'utiliser.
Anthony Nichols
1
Ne fait pas exactement ce qui était demandé, mais est néanmoins intéressant.Si la colonne A avait une longue série de nombres, alors si vous avez copié cette formule pour dire C, D, E, F, G et que vous l'avez glissée vers le bas d'un nombre suffisant de lignes, vous obtiendrez 5 colonnes de données plus courtes. Les données circulent sur les cinq colonnes, alors que je m'attends à ce que vous vouliez que les données circulent dans chaque colonne et serpentent à travers. Encore une formule compacte très intéressante.
loneRanger
0

Le moyen le plus simple que j'ai trouvé était de créer une nouvelle feuille de calcul et de recréer simplement le tableau en le séparant manuellement dans des colonnes distinctes.

par exemple A1 =Sheet1!A1

B1 =Sheet1!B1

C1 =Sheet1!C1

D1 vide (pour une colonne de séparation)

puis E1 =Sheet1!E51

F1 =Sheet1!B51

G1 =Sheet1!C51

Et copiez ceci sur 50 lignes. Cela transforme ensuite une table à 100 colonnes à une seule colonne en une table à 50 colonnes à 2 colonnes. Ajustez selon vos besoins.

Bien sûr, cela est manuel et dépend du nombre de lignes restant le même. Il ne serait pas difficile de calculer dynamiquement le nombre de lignes requises à partir du nombre de lignes de la table d'origine et du nombre de colonnes souhaité. Le seul problème est de savoir si le tableau d'origine s'étend au-delà de ce qui tient sur une seule page lorsqu'il est séparé en colonnes sur la nouvelle feuille.

Dave Bradshaw
la source
0

Si vous avez Adobe Indesign, vous pouvez y placer un fichier Excel et faire cette mise en page en toute simplicité.

Igor Fomenko
la source