OVH Cloud OVH Cloud

Tri

8 réponses
Avatar
Pierre.M
Bonjour tous,

En colonne A j'ai des prenom+nom. Est-il quand meme possible de trier
sur le nom d'abord et sur le prenom ensuite? Je ne voudrais pas
rajouter des colonnes, meme cachees...

Merci d'avance pour le coup de main.

Pierre.M

8 réponses

Avatar
ChristianM
Bonjour,
Cela ne doit pas poser de problème car excel explore les lettres une par une
dans la chaîne constituée du nom et du prénom

"Pierre.M" a écrit dans le message de news:
44aa85f7$0$851$
Bonjour tous,

En colonne A j'ai des prenom+nom. Est-il quand meme possible de trier sur
le nom d'abord et sur le prenom ensuite? Je ne voudrais pas rajouter des
colonnes, meme cachees...

Merci d'avance pour le coup de main.

Pierre.M



Avatar
Excel...lent
Salut Pierre,

En inversant dans ta colonne prénom+nom en nom+prénom.

Ensuite tu n'as plus qu'a trier normalement avec DONNEES / TRIER

Cordialement.

Marc
Avatar
ChristianM
Oups, j'avais mal lue la question !

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

Bonjour,
Cela ne doit pas poser de problème car excel explore les lettres une par
une dans la chaîne constituée du nom et du prénom

"Pierre.M" a écrit dans le message de news:
44aa85f7$0$851$
Bonjour tous,

En colonne A j'ai des prenom+nom. Est-il quand meme possible de trier sur
le nom d'abord et sur le prenom ensuite? Je ne voudrais pas rajouter des
colonnes, meme cachees...

Merci d'avance pour le coup de main.

Pierre.M







Avatar
Pierre.M
Salut Marc,

bien-sur j'y avais pense. Mais ce n'est pas ca que je voudrais faire...

Merci quand meme.

Pierre.M


On 2006-07-04 17:23:26 +0200, "Excel...lent" said:

Salut Pierre,

En inversant dans ta colonne prénom+nom en nom+prénom.

Ensuite tu n'as plus qu'a trier normalement avec DONNEES / TRIER

Cordialement.

Marc


Avatar
Excel...lent
Re Pierre,

Ok.
Désolé mais là pour l'instant je sèche. Néanmoins ton fil m'interresse alors
je vais continuer à gratter pour voir si j'arrive à sortir quelquechose.
Et puis qui sait d'Içi là il y aura bien un Champion pour proposer un
soluce... :-)

Cordialement

Marc
Avatar
Pierre.M
Merci a toi.

Pierre.M


On 2006-07-04 20:12:46 +0200, "Excel...lent" said:

Re Pierre,

Ok.
Désolé mais là pour l'instant je sèche. Néanmoins ton fil m'interresse alors
je vais continuer à gratter pour voir si j'arrive à sortir quelquechose.
Et puis qui sait d'Içi là il y aura bien un Champion pour proposer un
soluce... :-)

Cordialement

Marc


Avatar
JB
Bonsoir,

http://cjoint.com/?hevebUxiXm

Sub TriNomPrénom()
Dim temp()
n = Range("Nom").Count
ReDim temp(n)
For i = 1 To n
x = Split(Range("Nom")(i), " ")
temp(i) = x(1) & " " & x(0)
Next i
Call Tri2(temp, 1, n)
For i = 1 To n
x = Split(temp(i), " ")
Range("Nom")(i) = x(1) & " " & x(0)
Next i
End Sub

Sub Tri2(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
tmp = a(g): a(g) = a(d): a(d) = tmp
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call Tri2(a, g, droi)
If gauc < d Then Call Tri2(a, gauc, d)
End Sub

JB


Bonjour tous,

En colonne A j'ai des prenom+nom. Est-il quand meme possible de trier
sur le nom d'abord et sur le prenom ensuite? Je ne voudrais pas
rajouter des colonnes, meme cachees...

Merci d'avance pour le coup de main.

Pierre.M


Avatar
JB
Tri un champ par Nom+Prénom

http://cjoint.com/?hexYoLswXb

Sub TriNomPrénom()
Application.ScreenUpdating = False
Dim temp()
n = Range("champ").Rows.Count
ReDim temp(n)
For i = 1 To n
x = Split(Application.Index(Range("champ"), i, 1), " ")
temp(i) = x(1) & " " & x(0)
Next i
Call Tri2(temp, 1, n)
End Sub

Sub Tri2(a, gauc, droi) ' Quick sort
col = Range("champ").Columns.Count
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
tempo = Range("champ").Offset(g - 1, 0).Resize(1, col).Value
Range("champ").Offset(g - 1, 0).Resize(1, col).Value =
Range("champ").Offset(d - 1, 0).Resize(1, col).Value
Range("champ").Offset(d - 1, 0).Resize(1, col).Value = tempo
g = g + 1: d = d - 1
End If
Loop While g <= d
If g < droi Then Call Tri2(a, g, droi)
If gauc < d Then Call Tri2(a, gauc, d)
End Sub

JB



Bonjour tous,

En colonne A j'ai des prenom+nom. Est-il quand meme possible de trier
sur le nom d'abord et sur le prenom ensuite? Je ne voudrais pas
rajouter des colonnes, meme cachees...

Merci d'avance pour le coup de main.

Pierre.M