Regrouper une liste sur plusieurs colonnes et par page

moreauste

XLDnaute Nouveau
Bonjour,

Je suis tout nouveau sur ce site et j'ai déjà une question :

Je souhaiterai savoir comment réduire le nombre de page à l'impression en utilisant plusieurs colonnes Excel automatiquement.

Je m'explique, voici un exemple de tableau sur 3 colonnes qui comporte 1200 références :

0001 - Produit A - Prix A
0002 - Produit B - Prix B
0003 - Produit C - Prix C
....
1200 - Produit XXX - Prix XXX

Aujourd'hui, cela prend 1/3 d'une page A4 mais sur xx pages.

Je souhaiterai utiliser l'espace perdu en utilisant toutes les colonnes disponibles à droite de ma feuille Excel

Imaginons que nous arrivions à la ligne 0030 en bas de page, je souhaiterai que la référence 0031 remonte en haut et en face de la référence 0001 de la première page plutôt que d'être sur la deuxième page.

J'espère que je me suis bien exprimé.

Merci.
 

PMO2

XLDnaute Accro
Re : Regrouper une liste sur plusieurs colonnes et par page

Bonjour,

Essayez le code suivant

Code:
'### Constante à adapter ###
Const NB_LIG As Long = 30
'###########################

Sub GrouperListe()
Dim S As Worksheet
Dim R As Range
Dim var
Dim T()
Dim i&
Dim j&
Dim cpt&
Dim nbPage&
Dim nbLig&
ActiveSheet.Copy After:=Sheets(ActiveSheet.Index)
Set S = ActiveSheet
Set R = S.UsedRange
nbLig& = R.Rows.Count
nbPage& = nbLig& \ (NB_LIG * 3)
If nbPage& * (NB_LIG * 3) < nbLig& Then nbPage& = nbPage& + 1
ReDim T(1 To nbPage& * NB_LIG * 3, 1 To 9)
Set R = S.Range(S.Cells(1, 1), S.Cells(nbPage& * NB_LIG * 3, 9))
var = R
For i& = 1 To nbLig&
  cpt& = cpt& + 1
  For j& = 1 To 3
    T(cpt&, j&) = var(i&, j&)
    T(cpt&, j& + 3) = var(i& + NB_LIG, j&)
    T(cpt&, j& + 6) = var(i& + NB_LIG * 2, j&)
  Next j&
  If i& Mod NB_LIG = 0 Then i& = i& + (NB_LIG * 2)
Next i&
R = T
End Sub

Cordialement.

PMO
Patrick Morange
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 945
Membres
103 989
dernier inscrit
jralonso