Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

tri d'un bloc de valeurs

4 réponses
Avatar
Didier
Bonjour,

je tourne en rond sur un problème que je croyais simple et je ne trouve
rien (ou je cherche mal) sur le net :
Soit une seule série de valeurs numériques, mais disposées en plusieurs
colonnes !!
Ex :
45 25 47
74 10 63
12 78 4
10 13 15

Je voudrais les trier en ordre croissant pour obtenir :

4 13 47
10 15 63
10 25 74
12 45 78

Vous me direz qu'il faut avoir l'esprit tordu pour organiser les données
d'une façon aussi peu propice à leur traitement, mais cela me
permettrait de les imprimer facilement sur une seule feuille A4.
S'il n'y a pas de solution simple, je vais réorganiser mes données en
une seule colonne. Là plus aucun problème pour les traiter, mais pour
les imprimer ...

Si quelqu'un a une idée je suis preneur ...
Merci

4 réponses

Avatar
stéphane
Bonjour,

le plus simple est de mettre les données sur une seule colonne, puis de
faire une feuille pour l'impression :

par exemple dans la feuille2 d'impression mettre en colonne A une référence
à la feuille1 cellule A1 à A4 , En colonne B référence à A5 à A8 , et ainsi
de suite .........


Stéphane

"Didier" a écrit dans le message de news:
48e1d432$0$859$
Bonjour,

je tourne en rond sur un problème que je croyais simple et je ne trouve
rien (ou je cherche mal) sur le net :
Soit une seule série de valeurs numériques, mais disposées en plusieurs
colonnes !!
Ex :
45 25 47
74 10 63
12 78 4
10 13 15

Je voudrais les trier en ordre croissant pour obtenir :

4 13 47
10 15 63
10 25 74
12 45 78

Vous me direz qu'il faut avoir l'esprit tordu pour organiser les données
d'une façon aussi peu propice à leur traitement, mais cela me permettrait
de les imprimer facilement sur une seule feuille A4.
S'il n'y a pas de solution simple, je vais réorganiser mes données en une
seule colonne. Là plus aucun problème pour les traiter, mais pour les
imprimer ...

Si quelqu'un a une idée je suis preneur ...
Merci


Avatar
JPMonnier
Bonjour, voici une proc qui le fait mais un peu compliqué
valeurs pacées en a2: c5 pour l'exemple

Sub Tri()
x = 2: y = 5
nb1 = Application.WorksheetFunction.CountA(Range("a2:c5"))
Do While nb1 <> 0
For Each n In [a2:c5]
c = c + 1

If n = Application.WorksheetFunction.Min(Range("a2:c5")) Then
Cells(x, y) = n
x = x + 1
n.Clear
nb1 = Application.WorksheetFunction.CountA(Range("a2:c5"))
If x = 6 Then
x = 2: y = y + 1
End If
End If
Next
Loop
Range("E2:G5").Select
Application.CutCopyMode = False
Selection.Copy
Range("A2").Select
ActiveSheet.Paste
Range("E2:G5").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("A2").Select
End Sub
--
Cordialement


"Didier" a écrit dans le message de
news:48e1d432$0$859$
Bonjour,

je tourne en rond sur un problème que je croyais simple et je ne trouve
rien (ou je cherche mal) sur le net :
Soit une seule série de valeurs numériques, mais disposées en plusieurs
colonnes !!
Ex :
45 25 47
74 10 63
12 78 4
10 13 15

Je voudrais les trier en ordre croissant pour obtenir :

4 13 47
10 15 63
10 25 74
12 45 78

Vous me direz qu'il faut avoir l'esprit tordu pour organiser les données
d'une façon aussi peu propice à leur traitement, mais cela me permettrait
de les imprimer facilement sur une seule feuille A4.
S'il n'y a pas de solution simple, je vais réorganiser mes données en une
seule colonne. Là plus aucun problème pour les traiter, mais pour les
imprimer ...

Si quelqu'un a une idée je suis preneur ...
Merci


Avatar
FFO
Salut Didier

Je te propose ce code qui rapporte toutes tes données dans la 1° colonne
libre de droite pour les trier puis les redistribuers ainsi triées dans les
colonnes suivantes avec la même présentation que tes colonnes sources
Colonne A B C à traiter sur 4 lignes
Colonne D toutes les données triées
Colonne E F G données traitées sur 4 lignes

Colonne = Mid(Range("IV1").End(xlToLeft).Offset(0, 1).Address, 2, 1)
Range("A1").Activate
Do While ActiveCell <> ""
Range(Range(Colonne & "65535").End(xlUp).Offset(1, 0).Address, Colonne &
Range(Colonne & "65535").End(xlUp).Row + Range(Cells(65535,
ActiveCell.Column).Address).End(xlUp).Row).Value = Range(Cells(1,
ActiveCell.Column).Address, Range(Cells(65535,
ActiveCell.Column).Address).End(xlUp)).Value
ActiveCell.Offset(0, 1).Activate
Loop
Columns(Colonne & ":" & Colonne).Sort Key1:=Range(Colonne & "1"),
Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:úlse, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
Range("A1").Activate
i = 1
Ligne = 0
Do While ActiveCell <> ""
Range(Cells(1, Range(Colonne & "1").Column + i).Address,
Cells(Range(Cells(65535, ActiveCell.Column).Address).End(xlUp).Row,
Range(Colonne & "1").Column + i).Address).Value = Range(Colonne & Ligne + 1,
Colonne & Ligne + Range(Cells(65535,
ActiveCell.Column).Address).End(xlUp).Row).Value
i = i + 1
Ligne = Ligne + Range(Cells(65535, ActiveCell.Column).Address).End(xlUp).Row
ActiveCell.Offset(0, 1).Activate
Loop

Celà devrait convenir
Dis moi !!!!
Avatar
Didier
Re bonjour,

Je viens de tester les 2 procédures fournies par Stéphane et JPMonnier,
cela fonctionne très bien, avec cela je devrais pouvoir adapter le code
à ma feuille.
Merci pour votre aide.
Didier