cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 2018
-
25 sept. 2006 à 13:03
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 2018
-
25 sept. 2006 à 17:22
Bonjour à tous....
Suite de mes précédents topics et des posts y résultant.
En mettant un fichier .txt dans un tableau , je trie toutes les lignes sur
une colonne (colonne 6, représentant le nom d'une imprimante).
Ma question:
Comment pourrai-je ajouté un tri sur la colonne 3 ?
Merci pour vos éventuelles suggestions (peu importe la version de VB).
Vous noterez que, pour une fois, mon script n'est pas trop brouillon !!!
jean-marc
'Exemple:
'Contenu de la ligne1: X3573|09/09/2006|21h39|BOURDPRH|STAROHS2-BOUR390H|IMSB.EDITION|PR05|1|
'Contenu de la ligne2: X3573|09/09/2006|21h39|BOURDPRH|STAROHS2-BOUR390H|IMSB.EDITION|PR03|1|
'Contenu de la ligne3: X3573|09/09/2006|21h39|BOURDPRJ|STAROHS2-BOUR390H|IMSB.EDITION|PR05|1|
'
'résultat espéré:
'
'Contenu de la ligne1: X3573|09/09/2006|21h39|BOURDPRH|STAROHS2-BOUR390H|IMSB.EDITION|PR03|1|
'Contenu de la ligne2: X3573|09/09/2006|21h39|BOURDPRJ|STAROHS2-BOUR390H|IMSB.EDITION|PR05|1|
'Contenu de la ligne3: X3573|09/09/2006|21h39|BOURDPRH|STAROHS2-BOUR390H|IMSB.EDITION|PR05|1|
'les lignes 2 et 3 ont à ma même imprimante, j'aimerai donc ajouté un tri sur le contenu de la colonne 4
'
Dim cprovisoire, bpermute, strtmp, i, j
Do While Not Fic_Entree.AtEndOfStream
strtmp = Split(Fic_Entree.ReadAll,vbCrLf) 'création tableau du fichier
Loop
Fic_Entree.Close
bpermute = True
Do While bpermute = True 'Il faut au moins parcourir une fois
bpermute = False 'On tourne tant que l'on bouge des valeurs
For i = UBound(strtmp) To 1 Step -1
'MsgBox strtmp(i)
If Len(strtmp(i)) > 1 Then
For j = 0 To i - 1
If Len(strtmp(j)) > 1 Then
If Split(strtmp(j), "|")(6) < Split(strtmp(j + 1), "|")(6) Then
cprovisoire = strtmp(j) 'On inverse les deux chaines
strtmp(j) = strtmp(j + 1) 'bis
strtmp(j + 1) = cprovisoire 'bis
bpermute = True
End If
End If
Next
End If
Next
Loop
Dim liste
For i = 0 To UBound(strtmp)
If Len(strtmp(i)) > 1 Then
liste = strtmp(i) &vbCrLf& liste
End If
Next
Fic_Sortie.WriteLine liste
Fic_Sortie.Close
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 25 sept. 2006 à 17:22
Re,
Ok pour le tri par (6) puis (3).
J'essaie en vain (pour l'instant) de supprimer les vbCrLf.
J'utilise le "If Len(strtmp(j)) > 1 Then... " qui n'est pas très esthétique.