repartition en colonnes

  • Initiateur de la discussion becooool
  • Date de début
B

becooool

Guest
bonjour

j'ai une liste des fichiers karaoké de 4 000 lignes à la queuleuleu dans une colonne.

Par gain de place sur la page j'ai besoin de mettre en 2 colonnes tout le contenu de mon unique colonne. Mais je dois garder l'ordre alphabétique c'est à dire que sur la première page j'ai besoin d'avoir dans la colonne de droite la suite de la colonne de gauche.

Exemple
======

page 1
---------

AA | AD
AB | AE
AC | AF

page 2
---------

BA | BD
BB | BE
BC | BF

Voilà j'ai expliqué mon cas tant bien que mal car pas facile mais j'espère que vous pourrez m'aider.

Merci beaucoup

n'hésitez pas à me contacter pour plus de renseignements.
 
Z

Zon

Guest
Salut,

Tu parles de 2 pages avec dans chacune une seule colonne à trier en 2 colonnes

Testes ceci dans un module standard
Sub Princ()
Dim T, V, J&, I&, K&
Dim F()
F = Array("Feuil1", "Feuil2") ' à adpater le nom des feuilles
For I = LBound(F) To UBound(F)
With Sheets(F(I))
T = Range(.[A1], .[A65536].End(xlUp)) 'à adapter la plage
TriMulti T, 1, LBound(T), UBound(T)
ReDim V(1 To UBound(T, 1), 1 To 2)
J = 1
For K = LBound(T, 1) To UBound(T, 1) Step 2
V(J, 1) = T(K, 1)
On Error Resume Next
V(J, 2) = T(K + 1, 1)
J = J + 1
Next K
.[A1].Resize(UBound(V, 1), UBound(V, 2)) = V ' adapter la cellule où on veut le résulat
End With
Next I
End Sub

Sub TriMulti(Tablo, Col As Byte, Min&, Max&) 'ZOn
Dim I&, J&, K&, M, Chaine
I = Min
J = Max
M = Tablo((Min + Max) / 2, Col)
While (I <= J)
While (Tablo(I, Col) < M And I < Max)
I = I + 1
Wend
While (M < Tablo(J, Col) And J > Min)
J = J - 1
Wend
If (I <= J) Then
For K = LBound(Tablo, 2) To UBound(Tablo, 2)
Chaine = Tablo(I, K)
Tablo(I, K) = Tablo(J, K)
Tablo(J, K) = Chaine
Next K
I = I + 1
J = J - 1
End If
Wend
If (Min < J) Then TriMulti Tablo, Col, Min, J
If (I < Max) Then TriMulti Tablo, Col, I, Max
End Sub

A+++
 
A

andré

Guest
Salut,

En complément de la macro de Zon, voici une solution par formules.

Je n'ai pas trouvé de fonction permettant d'afficher le nombre de lignes par page : il faut donc le faire manuellement.

Ândré.
 

Pièces jointes

  • Repartition_en_colonnes.zip
    9.7 KB · Affichages: 15
A

andré

Guest
Salut Zon,

J'ai relu attentivement la question et je crois que je suis dans le bon, enfin presque (comme quoi il est plus difficile d'écrire correctement une question qu'une procédure ou une formule - lol).

Dans l'exemple je remarque maintenant qu'il y a un saut de page (et non de feuille) à chaque changement du premier caractère de la valeur.
Il faudrait donc au moins une feuille de 26 pages (une page minimum par lettre de l'alphabet).
Attendons becooool pour nous départager.

Il y a, entre-autres, deux choses que je ne parviens pas à faire par formule : récupérer le nombre de lignes par page et forcer un saut de page.

Si tu avais une idée ?

Ândré.

PS : Dans ma langue maternelle, ton pseudo veut dire "soleil", bien agréable pour ceux qui vivent dans ton entourage.
 

Discussions similaires

Réponses
3
Affichages
263
Réponses
13
Affichages
624

Statistiques des forums

Discussions
312 107
Messages
2 085 354
Membres
102 873
dernier inscrit
yayo