Regrouper une liste sur plusieurs colonnes

Fermé
moreauste - 2 nov. 2010 à 17:33
 moreauste - 8 nov. 2010 à 12:00
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 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 428
3 nov. 2010 à 14:18
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 58789 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 1 janvier 2025 17 260
3 nov. 2010 à 19:12
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 58789 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 1 janvier 2025 17 260
4 nov. 2010 à 00:24
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 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 428
Modifié par ccm81 le 5/11/2010 à 18:12
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
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié par Patrice33740 le 6/11/2010 à 00:48
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 58789 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 1 janvier 2025 17 260
6 nov. 2010 à 01:51
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 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié par Patrice33740 le 6/11/2010 à 21:43
Bonsoir Raymond, c'est exactement ce qui se passe lorsqu'on copie dans Word. sur plusieurs colonnes.
0
Merci beaucoup.
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
Modifié par Patrice33740 le 3/11/2010 à 23:07
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 58789 Date d'inscription lundi 13 août 2007 Statut Contributeur Dernière intervention 1 janvier 2025 17 260
4 nov. 2010 à 00:25
Tu es certain ?
0
Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
4 nov. 2010 à 17:17
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 10905 Date d'inscription lundi 18 octobre 2010 Statut Membre Dernière intervention 27 décembre 2024 2 428
5 nov. 2010 à 09:23
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
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