OK...
Tu utilises les listes, tu aurais du opter pour les Map et / ou tableau mais bon...
Voilà mon astuce pour rester dans ton optique de codage.
En gros ta clé trie ne sert pas. Tu as ordre pré établie dans ta structure et tu souhaites le trier dans l'ordre que tu veux.. Voilà comment je procèderai.
Code : Tout sélectionner
Structure ClientStr
Nom.s ; 1
Tel.s ; 2
adresse.s ; 3
profession.s ; 4
age.s ; 5
sexe.s ; 6
Salaire.s ; 7
EndStructure
; La liste qui va stocker les infos structurées
Global NewList TousLesChamps.ClientStr()
; La liste qui va stocker ligne par lignes les infos clients le tout séparé par une virgule
Global NewList Client.s()
Macro AddClient(M_Nom, M_Tel, M_Adresse, M_Prof, M_age, M_Sexe, M_salaire)
; Ar-S
; On stock tous les champs dans une simple liste structurée
AddElement (TousLesChamps() )
TousLesChamps.ClientStr\Nom = M_Nom
TousLesChamps\Tel = M_Tel
TousLesChamps\adresse = M_Adresse
TousLesChamps\profession= M_Prof
TousLesChamps\age = M_age
TousLesChamps\sexe = M_Sexe
TousLesChamps\Salaire = M_salaire
; stockage ligne par lignes des infos clients le tout séparé par une virgule
AddElement( Client() )
Client() = TousLesChamps\Nom.s +","+TousLesChamps\Tel.s+","+TousLesChamps\Adresse.s +","+ TousLesChamps\profession.s +","+ TousLesChamps\age.s +","+ TousLesChamps\sexe.s +","+ TousLesChamps\Salaire.s
EndMacro
Macro TrieClient(Champ1,Champ2,Champ3,Champ4,Champ5,Champ6,Champ7)
;Ar-S
; La macro qui va servir à trier selon le numéro des champs
ForEach Client()
Ligne.s = Client()
El1.s = StringField(Ligne.s,Champ1,",")
El2.s = StringField(Ligne.s,Champ2,",")
El3.s = StringField(Ligne.s,Champ3,",")
El4.s = StringField(Ligne.s,Champ4,",")
El5.s = StringField(Ligne.s,Champ5,",")
El6.s = StringField(Ligne.s,Champ6,",")
El7.s = StringField(Ligne.s,Champ7,",")
; C'est cette NewLigne.s que tu remplaceras par une nouvelle liste chainée (faut bien que tu bosses un peu)
NewLigne.s = El1 + Space(1) + El2 + Space(1) + El3 + Space(1) + El4 + Space(1) + El5 + Space(1) + El6 + Space(1) + El7
Debug NewLigne
Next
EndMacro
; ///////////////////////////////////////////////////
; /////////////////// PROG //////////////////////////
; ///////////////////////////////////////////////////
; Ajoute client 1
AddClient("Ar-S", "06.06.06.06.06", "Rue du zbouel", "informaticien", "42", "rose", "1400")
; Ajoute client 2
AddClient("Omega", "07.07.07.07.07", "Rue du zboubi", "codeur", "30", "autre", "1800")
; Affichage standard
Debug "/////// Affichage standard //////////"
ForEach Client()
Debug Client()
Next
Debug ""
Debug "/////// Affichage trié //////////"
;Je trie selon un ordre désiré
TrieClient(1,7,2,3,5,4,6) ; Tri Nom Salaire Tel Adresse Age Prof Sexe