Regrouper une liste sur plusieurs colonnes

moreauste -  
 moreauste -
Bonjour,

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.

4 réponses

ccm81 Messages postés 11033 Statut Membre 2 434
 
peut etre une solution
recopier sur une autre feuille copie le catalogue remis en page
pour celà

nommer tab le catalogue complet
Créer une feuille et la nommer Copie

placer un bouton sur la feuille catalogue
y affecter le code

modifier les constantes selon l'utilisation

Option Explicit

Private Sub CommandButton1_Click()

Const nbCoPr = 2       ' nombre de colonnes pour 1 produit
Const nbLi = 4         ' nombre de lignes imprimables par feuille
Const nbCo = 3         ' nombre de colonnes (de produit) souhaitées par feuilles
Const PremLi = 1       ' premiere ligne sur la feuille Copie

Dim nbPr As Long       ' nombre de produits du catalogue
Dim NuFe As Long       ' numéro de feuille imprimable (NbLi x nbCo)
Dim nupr As Long       ' numéro de produit dans le catalogue
Dim LiTab As Long      ' Ligne courante du catalogue (nommé Tab sur la feuille)
Dim lp As Long         ' Ligne courante sur la feuille Copie
Dim cp As Long         ' Colonne courante sur la feuille Copie
Dim co As Long         ' colonne de service
Dim NuCoPr As Long     ' Numéro colonne produit sur la feuille Copie

  Worksheets("Copie").Range("a1:z1000").ClearContents
  nbPr = Range("Tab").Rows.Count
  NuFe = 1
  For nupr = 1 To nbPr
    LiTab = nupr
    lp = PremLi + ((nupr - 1) Mod (nbLi)) + nbLi * ((nupr - 1) \ (nbLi * nbCo))
    If (nupr Mod (nbLi * nbCo)) = 0 Then
      co = nbCo * nbCoPr - 1
      NuFe = NuFe + 1
    Else
     co = 1 + ((nupr - 1 - (nbLi * nbCo) * (NuFe - 1)) \ nbLi) * nbCoPr
    End If
    For NuCoPr = 1 To nbCoPr
      cp = co + NuCoPr - 1
      Worksheets("Copie").Cells(lp, cp).Value = Range("Tab").Cells(LiTab, NuCoPr).Value
    Next NuCoPr
  Next nupr
  
End Sub


voir en exemple

http://www.cijoint.fr/cjlink.php?file=cj201011/cijwdlFuUd.xls

bonne suite
0
Raymond PENTIER Messages postés 71869 Date d'inscription   Statut Contributeur Dernière intervention   17 398
 
Bonjour moreauste.

Et sans macro, en C2 la formule =A32, à recopier dans la plage C2:I31.
Puis sélectionner C2:I31 et faire Copier/Collage spécial Valeurs

* attention, travailler sur une copie, pas sur le fichier original : on ne sait jamais !

Cordialement.
0
Raymond PENTIER Messages postés 71869 Date d'inscription   Statut Contributeur Dernière intervention   17 398
 
Excuse-moi, j'ai été un peu rapide (tout content d'avoir trouvé une façon de faire sans VBA ...)
Alors je reprends et je rectifie :
1) En D2, formule =A32 ; recopier dans la plage D2:F31
2) En G2, formule =A62 ; recopier dans la plage G2:I31
3) Sélectionner D2:I31, faire Copier, puis (sans bouger) Collage spécial Valeurs
4) Supprimer les lignes 32 à 91 ; les données suivantes remontent de 60 lignes
5) Recommencer la manoeuvre 12 fois (éventuellement en se faisant aider d'une macro enregistrée) ...
0
ccm81 Messages postés 11033 Statut Membre 2 434
 
la technique de patrice33740 marche bien un simple copier/coller transporte tout
sinon avec la macro il faut aussi copier le format
pour transporter la couleur et la largeur ajouter après l'instruction Worksheets("Copie")... les deux lignes

Worksheets("Copie").Cells(lp, cp).Interior.Color = Range("Tab").Cells(LiTab, NuCoPr).Interior.Color
Worksheets("Copie").Cells(lp, cp).ColumnWidth = Range("Tab").Cells(LiTab, NuCoPr).ColumnWidth

bonne suite
0
moreauste
 
Merci... Et pour copie la typo (police et gras/italique) ?
...
Par contre, je ne comprend vraiment pas pour la technique de patrice33740
0
Patrice33740 Messages postés 8930 Statut Membre 1 782
 
Bonsoir,

Il s'agit de faire un simple copier coller dans un document vierge puis de faire une mise en page avec 3 colonnes (je n'ai jamais parlé de créer un tableau à 3 colonne !).
Avec Word 2007 : onglet Mise en Page, Colonnes, Trois
Avec Word 2003 : menu Format, Colonnes, Trois

Patrice
0
Raymond PENTIER Messages postés 71869 Date d'inscription   Statut Contributeur Dernière intervention   17 398
 
moreauste avait bien spécifié au départ "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."

Voilà pourqui je m'étais étonné ...
https://forums.commentcamarche.net/forum/affich-19697841-regrouper-une-liste-sur-plusieurs-colonnes#5
0
Patrice33740 Messages postés 8930 Statut Membre 1 782
 
Bonsoir Raymond, c'est exactement ce qui se passe lorsqu'on copie dans Word. sur plusieurs colonnes.
0
moreauste
 
Merci beaucoup.
0
Patrice33740 Messages postés 8930 Statut Membre 1 782
 
Bonjour,

Autre solution :
Ouvre un document Word vierge,
Met le en page avec 2 ou 3 colonnes
Copie ton tableau Excel dans Word.

Patrice
Nicolas dit toujours : « C'est facile quand on connait la réponse ! »
-1
Raymond PENTIER Messages postés 71869 Date d'inscription   Statut Contributeur Dernière intervention   17 398
 
Tu es certain ?
0
Patrice33740 Messages postés 8930 Statut Membre 1 782
 
Oui Raymond, un simple Copier Coller dans Word suffit..
La mise en page (choix du nombre de colonne) peut-être faite avant ou après le Coller.

Cordialement
Patrice.
0
ccm81 Messages postés 11033 Statut Membre 2 434
 
evidemment bien sur que ça va de soi ....
bon, j'ai quand même eu le plaisir de calculer quelques coordonnées ...
cordialement
ccm81
0
moreauste
 
Merci à vous tous,

Patrice33740,
Je n'arrive pas à reproduire ce que tu dis... J'ai créé un tableau de 3 colonnes sous Word puis j'ai copié la colonne 1 du tableau fournie en pièce jointe par ccm81... Tout se copie dans la première colonne sur x pages mais pas dans les autres colonnes ! Que fais-je donc pas ?

ccm81,
Super ta macro mais comment fais-tu pour un collage avec la mise en forme car actuellement c'est plutôt un collage spécial avec uniquement le texte qui est fait (c'est un catalogue produit avec des couleurs pour indiquer si cela est destiné pour une femme ou un homme).

Merci.
0