Trier par ordre chronologique des noms de famille et des prénoms

noemiefigaro Messages postés 4 Date d'inscription mercredi 3 août 2005 Statut Membre Dernière intervention 4 août 2005 - 3 août 2005 à 14:02
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 4 août 2005 à 20:14
Je voudrais trier un tableau de plusieurs noms de famille et de prénoms.
Je suis débutante, qqun pourrait-il me fournir un algorithme simple permettant de trier ce tableau par ordre alphabétique.
Merci.
Noémie

7 réponses

PtitGrumo Messages postés 205 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 28 novembre 2005 2
3 août 2005 à 14:24
Bonjour noémi!

Peut tu me dire quel est ce tableau? c'est du Excel? du Access? et si c'est du Access peut tu me dire comment tu l'alimente?

A tout de suite

PtitGrumo
0
noemiefigaro Messages postés 4 Date d'inscription mercredi 3 août 2005 Statut Membre Dernière intervention 4 août 2005
3 août 2005 à 15:15
C'est un tableau dans Visual Basic
0
PtitGrumo Messages postés 205 Date d'inscription samedi 22 janvier 2005 Statut Membre Dernière intervention 28 novembre 2005 2
3 août 2005 à 15:21
Ok donc tu as une requète qui te permet de remplir ce tableau non?

alors essai a la fin de cette rquète de mettre un Order by!

Envoi moi ta requète si tu veux!

++

PtitGrumo
0
noemiefigaro Messages postés 4 Date d'inscription mercredi 3 août 2005 Statut Membre Dernière intervention 4 août 2005
3 août 2005 à 15:57
En fait, je suis vraiment au début, alors "requete" ne fait pas encore partie de mes connaissances.
Par exemple, je voudrais savoir comment trier " les noms Dupont Vanderdonck et Faignard".
Quels sont les lignes de code à écrire ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
3 août 2005 à 19:24
Salut, comment remplis-tu ton tableau ?

Si c'est juste un algo de tri que tu souhaites, en voici un très simple pour des tableaux pas trop grands :

Dim t(5) As String
Dim x As String
Dim i As Integer
Dim j As Integer


' remplissage du tableau
t(0) = "zezette"
t(1) = "tristant"
t(2) = "albert"
t(3) = "bertrand"
t(4) = "cathy"
t(5) = "megane"

' tri du tableau
For i = 0 To UBound(t) - 1
For j = i + 1 To UBound(t)
If t(i) > t(j) Then
x = t(i)
t(i) = t(j)
t(j) = x
End If
Next j
Next i

' Visu du résultat
For i = 0 To UBound(t)
MsgBox t(i)
Next

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
noemiefigaro Messages postés 4 Date d'inscription mercredi 3 août 2005 Statut Membre Dernière intervention 4 août 2005
4 août 2005 à 11:30
Merci !
UBound c'est quoi ça ? Il n'y a pas un autre nom pour cela ?
Si après je veux ajouter ou supprimer un nom, comment je fais ?
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
4 août 2005 à 20:14
Ubound(t) renvoit l'index max du tableau 't'.
Ex : dim t(5) -> ubound(t) renvoit 5.

Tu peux toujours t'en passer et faire plus compliqué si tu connais les dimensions de ton tableau :

Const limitemax as integer = 5
dim t(limitemax)

et tu remplaces les ubound(t) par limitemax.

L'avantage de ubound(t) est que tu n'as pas à te préoccuper de la taille de ton tableau surtout s'il est dynamique.
Puisque tu parles d'ajout et de suppression dans le tableau, ça doit convenir parfaitement et t'éviter de gérer des variables dans tous les coins.

Pour ajouter un nom, le mieux est un tableau dynamique :
dim t() as string

' 1er remplissage du tableau
redim t(5)
t(0) = "zezette"
t(1) = "tristant"
t(2) = "albert"
t(3) = "bertrand"
t(4) = "cathy"
t(5) = "megane"

'ajout d'un nom : l'index max deviendra 6
dim newindexmax as integer
newindexmax = ubound(t)+1
redim preserve t(newindexmax)
t(newindexmax) ="cunegonde"

'------------------------------

'suppression d'un nom par ex : albert
dim i as integer

for i=0 to ubound(t)
if t(i)="albert" then t(i) = ""
next

' tri du tableau en descendant pour mettre les cellules vides à la fin
For i = 0 To UBound(t) - 1
For j = i + 1 To UBound(t)
If t(i) < t(j) Then
x = t(i)
t(i) = t(j)
t(j) = x
End If
Next j
Next i

'redim du tableau pour éliminer les trous
redim t(ubound(t)-1)

Ensuite, tu peux retrier le tableau en ascendant comme dans mon 1er post.

Tout ça c'est bien compliqué, n'est ce pas ? Et encore, ce n'est que pour un tableau à 1 dimension. Le mieux serait que tu te serves d'une base de données comme access.

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
Rejoignez-nous