OVH Cloud OVH Cloud

Probleme de tri

6 réponses
Avatar
Roby
Bonjour,
Si j'ai une centaine de noms répartis dans 3 colonnes différentes, par
exemple la A, la C et la E, je sais trier séparement par ordre
alphabétique chaque colonne.
Mais comment faire pour que le tri concerne les 3 colonnes à la fois ?
J'ai essayé de faire des selections multiples mais cela ne fonctionne
pas.
Merci pour vos réponses.
Roby

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net

6 réponses

Avatar
lSteph
Bonjour,

Le menu trier propose vertical ou horizontal.
Sans autre astuce ou macro, il te faut normalement trier une seule colonne
puis seulement ensuite la répartir en trois.
Il ne faut pas oublier qu'Excel est un tableur il va servir a calculer,
qualifier, quantifier des trier,des données donc l'intérêt est d'avoir une
colonne par donnée type
(et non pas trois) exemple: Nom, Prénom, Montant.
Sinon utiliser plutôt Word ou un logiciel de présentation.

Amicalement.

lSteph



"Roby" a écrit dans le message de news:

Bonjour,
Si j'ai une centaine de noms répartis dans 3 colonnes différentes, par
exemple la A, la C et la E, je sais trier séparement par ordre
alphabétique chaque colonne.
Mais comment faire pour que le tri concerne les 3 colonnes à la fois ?
J'ai essayé de faire des selections multiples mais cela ne fonctionne pas.
Merci pour vos réponses.
Roby

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net




Avatar
Roby
lSteph a utilisé son clavier pour écrire :
Bonjour,

Le menu trier propose vertical ou horizontal.
Sans autre astuce ou macro, il te faut normalement trier une seule colonne
puis seulement ensuite la répartir en trois.
Il ne faut pas oublier qu'Excel est un tableur il va servir a calculer,
qualifier, quantifier des trier,des données donc l'intérêt est d'avoir une
colonne par donnée type
(et non pas trois) exemple: Nom, Prénom, Montant.
Sinon utiliser plutôt Word ou un logiciel de présentation.

Amicalement.

lSteph



"Roby" a écrit dans le message de news:

Bonjour,
Si j'ai une centaine de noms répartis dans 3 colonnes différentes, par
exemple la A, la C et la E, je sais trier séparement par ordre alphabétique
chaque colonne.
Mais comment faire pour que le tri concerne les 3 colonnes à la fois ?
J'ai essayé de faire des selections multiples mais cela ne fonctionne pas.
Merci pour vos réponses.
Roby

-- Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net





Merci ISteph,
Je vais faire une petite macro qui fera couper/coller de chaque
colonne pour remettre dans une seule autre, puis tri, puis
recouper/coller dans l'autre sens.
Ca devrait marcher.
Roby

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net


Avatar
JB
Bonsoir,

Tri champ multi-zones:Le champ est nommé Nbr

http://cjoint.com/?gbvDZMidzg

Sub essai()
Dim temp()
ReDim temp(Range("nbr").Count)
lig = 0
For i = 1 To Range("nbr").Areas.Count
For j = 1 To Range("nbr").Areas(i).Count
lig = lig + 1
temp(lig) = Range("nbr").Areas(i)(j)
Next j
Next i
'--tri
For i = 1 To lig
For j = i To lig
If temp(j) < temp(i) Then
temporary = temp(j)
temp(j) = temp(i)
temp(i) = temporary
End If
Next j
Next i
'---
lig = 0
For i = 1 To Range("nbr").Areas.Count
For j = 1 To Range("nbr").Areas(i).Count
lig = lig + 1
Range("nbr").Areas(i)(j) = temp(lig)
Next j
Next i
End Sub

Cordialement JB


Bonjour,
Si j'ai une centaine de noms répartis dans 3 colonnes différentes, par
exemple la A, la C et la E, je sais trier séparement par ordre
alphabétique chaque colonne.
Mais comment faire pour que le tri concerne les 3 colonnes à la fois ?
J'ai essayé de faire des selections multiples mais cela ne fonctionne
pas.
Merci pour vos réponses.
Roby

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net


Avatar
JB
Version + rapide (Quick sort)

http://cjoint.com/?gbv2pU0Dg1

Sub TriMC()
Dim temp()
ReDim temp(Range("nbr").Count)
lig = 0
For i = 1 To Range("nbr").Areas.Count
For j = 1 To Range("nbr").Areas(i).Count
lig = lig + 1
temp(lig) = Range("nbr").Areas(i)(j)
Next j
Next i
Call tri(temp, 1, lig)
lig = 0
For i = 1 To Range("nbr").Areas.Count
For j = 1 To Range("nbr").Areas(i).Count
lig = lig + 1
Range("nbr").Areas(i)(j) = temp(lig)
Next j
Next i
End Sub

Sub tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub


JB


Bonjour,
Si j'ai une centaine de noms répartis dans 3 colonnes différentes, par
exemple la A, la C et la E, je sais trier séparement par ordre
alphabétique chaque colonne.
Mais comment faire pour que le tri concerne les 3 colonnes à la fois ?
J'ai essayé de faire des selections multiples mais cela ne fonctionne
pas.
Merci pour vos réponses.
Roby

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net


Avatar
Roby
JB vient de nous annoncer :
Version + rapide (Quick sort)

http://cjoint.com/?gbv2pU0Dg1

Sub TriMC()
Dim temp()
ReDim temp(Range("nbr").Count)
lig = 0
For i = 1 To Range("nbr").Areas.Count
For j = 1 To Range("nbr").Areas(i).Count
lig = lig + 1
temp(lig) = Range("nbr").Areas(i)(j)
Next j
Next i
Call tri(temp, 1, lig)
lig = 0
For i = 1 To Range("nbr").Areas.Count
For j = 1 To Range("nbr").Areas(i).Count
lig = lig + 1
Range("nbr").Areas(i)(j) = temp(lig)
Next j
Next i
End Sub

Sub tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub


JB


Bonjour,
Si j'ai une centaine de noms répartis dans 3 colonnes différentes, par
exemple la A, la C et la E, je sais trier séparement par ordre
alphabétique chaque colonne.
Mais comment faire pour que le tri concerne les 3 colonnes à la fois ?
J'ai essayé de faire des selections multiples mais cela ne fonctionne
pas.
Merci pour vos réponses.
Roby

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net



Merci bcp JB,
En fait je me suis débrouillé en enregistrant une macro où je fais un
copier coller de chaque colonne dans une autre colonne, donc je met
tout l'un en dessous de l'autre, puis je trie dans cette nouvelle et
seule colonne qui reprend les données des 3 autres colonnes, puis,
après avoir trié, je refais couper coller en 3 séquences pour
repositionner 1/3 des données dans chaque colonne.
Ca marche bien
Je me suis sans doute pas très bien expliqué... mais j'ai résolu mon pb
Merci à toi
Roby

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net


Avatar
JB
Tri avec 2 Colonnes. Pour 3 colonnes, ajouter une table temp3():

http://cjoint.com/?gcnH0t1kK3

Sub TriMC2()
Dim temp(), temp2()
ReDim temp(Range("Nom").Count)
ReDim temp2(Range("Nom").Count)
lig = 0
For i = 1 To Range("Nom").Areas.Count
For j = 1 To Range("Nom").Areas(i).Count
lig = lig + 1
temp(lig) = Range("Nom").Areas(i)(j)
temp2(lig) = Range("Nbr").Areas(i)(j)
Next j
Next i
Call Tri2(temp, temp2, 1, lig)
lig = 0
For i = 1 To Range("Nom").Areas.Count
For j = 1 To Range("Nom").Areas(i).Count
lig = lig + 1
Range("Nom").Areas(i)(j) = temp(lig)
Range("Nbr").Areas(i)(j) = temp2(lig)
Next j
Next i
End Sub

Sub Tri2(a, b, gauc, droi) ' Quick sort
ref = a((gauc + droi) 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
tmp = a(g): a(g) = a(d): a(d) = tmp
tmp2 = b(g): b(g) = b(d): b(d) = tmp2
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call Tri2(a, b, g, droi)
If gauc < d Then Call Tri2(a, b, gauc, d)
End Sub

Cordialement JB



JB vient de nous annoncer :
Version + rapide (Quick sort)

http://cjoint.com/?gbv2pU0Dg1

Sub TriMC()
Dim temp()
ReDim temp(Range("nbr").Count)
lig = 0
For i = 1 To Range("nbr").Areas.Count
For j = 1 To Range("nbr").Areas(i).Count
lig = lig + 1
temp(lig) = Range("nbr").Areas(i)(j)
Next j
Next i
Call tri(temp, 1, lig)
lig = 0
For i = 1 To Range("nbr").Areas.Count
For j = 1 To Range("nbr").Areas(i).Count
lig = lig + 1
Range("nbr").Areas(i)(j) = temp(lig)
Next j
Next i
End Sub

Sub tri(a, gauc, droi) ' Quick sort
ref = a((gauc + droi) 2)
g = gauc: d = droi
Do
Do While a(g) < ref: g = g + 1: Loop
Do While ref < a(d): d = d - 1: Loop
If g <= d Then
temp = a(g): a(g) = a(d): a(d) = temp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call tri(a, g, droi)
If gauc < d Then Call tri(a, gauc, d)
End Sub


JB


Bonjour,
Si j'ai une centaine de noms répartis dans 3 colonnes différentes, par
exemple la A, la C et la E, je sais trier séparement par ordre
alphabétique chaque colonne.
Mais comment faire pour que le tri concerne les 3 colonnes à la fois ?
J'ai essayé de faire des selections multiples mais cela ne fonctionne
pas.
Merci pour vos réponses.
Roby

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net



Merci bcp JB,
En fait je me suis débrouillé en enregistrant une macro où je fais un
copier coller de chaque colonne dans une autre colonne, donc je met
tout l'un en dessous de l'autre, puis je trie dans cette nouvelle et
seule colonne qui reprend les données des 3 autres colonnes, puis,
après avoir trié, je refais couper coller en 3 séquences pour
repositionner 1/3 des données dans chaque colonne.
Ca marche bien
Je me suis sans doute pas très bien expliqué... mais j'ai résolu mo n pb
Merci à toi
Roby

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net