Regrouper une liste sur plusieurs colonnes

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. 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
    1. Contributeur
      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. Contributeur
        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
    2. 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. Merci... Et pour copie la typo (police et gras/italique) ?
        ...
        Par contre, je ne comprend vraiment pas pour la technique de patrice33740
        0
      2. 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. Contributeur
        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. Bonsoir Raymond, c'est exactement ce qui se passe lorsqu'on copie dans Word. sur plusieurs colonnes.
        0
      5. Merci beaucoup.
        0
    3. 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. Contributeur
        Tu es certain ?
        0
      2. 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. 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. 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