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
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <kreos@free.fr> a écrit dans le message de news:
mn.09917d66220f5488.26755@free.fr...
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
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
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
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" <kreos@free.fr> a écrit dans le message de news:
mn.09917d66220f5488.26755@free.fr...
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
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
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
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
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
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
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
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
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
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
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
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
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
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