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

  1. 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
  2. Raymond PENTIER Messages postés 58225 Date d'inscription   Statut Contributeur Dernière intervention   17 487
     
    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
    1. Raymond PENTIER Messages postés 58225 Date d'inscription   Statut Contributeur Dernière intervention   17 487
       
      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
  3. 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
    1. moreauste
       
      Merci... Et pour copie la typo (police et gras/italique) ?
      ...
      Par contre, je ne comprend vraiment pas pour la technique de patrice33740
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      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
    3. Raymond PENTIER Messages postés 58225 Date d'inscription   Statut Contributeur Dernière intervention   17 487
       
      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
    4. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Bonsoir Raymond, c'est exactement ce qui se passe lorsqu'on copie dans Word. sur plusieurs colonnes.
      0
    5. moreauste
       
      Merci beaucoup.
      0
  4. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    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
    1. Raymond PENTIER Messages postés 58225 Date d'inscription   Statut Contributeur Dernière intervention   17 487
       
      Tu es certain ?
      0
    2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      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
    3. 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
    4. 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