Remettre lignes dans un ordre précis

Résolu
Signaler
Messages postés
897
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
26 juillet 2007
-
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
-
Salut !



J'ai un fichier qui se présente de cette façon:



119

D:\Mp3\musique1.mp3

147

D:\Mp3\musique4.mp3

156

D:\Mp3\musique3.mp3

263

D:\Mp3\musique2.mp3



J'ai autre part une liste avec des numéros, représentant l'ordre de mes chansons.

Je voudrais que cette liste soit respectée et que les morceaux soient remis dans l'ordre.

Exemple:

Ma liste de zik:

147

263

119

156



Je veux que le fichier final soit:



D:\Mp3\musique4.mp3

D:\Mp3\musique2.mp3

D:\Mp3\musique1.mp3

D:\Mp3\musique3.mp3







Voila, Merci !

6 réponses

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
en fait c'est 2 fichiers dans un seul fichier, problème comment savoir à quel moment commence le deuxième fichier ?
il y avait une solution c'est de tester si le numéro est déjà sorti une fois, donc If Table(num) <> "" then --> 2ème fichier mais est-ce que forcémént le fichier correspondant est toujours présent ?
j'ai pris une autre solution c'est de tester si présence de ":" dans la chaîne ce qui oblige à revenir en arrière pour écrire le numéro

Dim Fichier1 As String
Dim fichier2 As String
Dim Ligne As String
Dim Table() As String
Dim num As Integer
Dim Bool As Boolean
ReDim Table(10000)


Fichier1 = "C:\DANIEL\mp31.txt"
fichier2 = "C:\DANIEL\mp32.txt"

Open Fichier1 For Input As #1
Open fichier2 For Output As #2

While Not EOF(1)
Line Input #1, Ligne
num = Ligne
If Bool Then
Print #2, Table(num)
Else
' risque de plantage si la liste derrière
' comprend 1 seul numéro
Line Input #1, Ligne
If InStr(Ligne, ":") > 0 Then
Table(num) = Ligne
Else
Bool = True
Print #2, Table(num)
num = Ligne
Print #2, Table(num)
End If
End If
Wend
Close #1
Close #2

' à utiliser avec prudence
' Kill Fichier1
' Name fichier2 As Fichier1

Daniel
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
principe:
chaque enregistrement est rangé dans une Table indicée par le numéro
ensuite pour l'écriture on a accès direct

Dim num As Integer
Dim Ligne As String
Dim Table() As String
Redim Table(1000)

Open Fichier1 For Input As #1
While Not EOF(1)
Line Input #1, Ligne
num = Ligne
Line Input #1, Ligne
Table(num) = Ligne
Wend
Close#1

Open Fichier2 For Output As #2
print#2, Table(147)
print#2, Table(263)
print#2, Table(119)
print#2, Table(156)
Close#2

Daniel
Messages postés
897
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
26 juillet 2007
2
Merci de ton aide, mais en fait j'ai oublié de dire que l'ordre des chansons (numéros) sont a la suite de la liste de chansons.

Voici le fichier:



119

D:\Mp3\fichier.mp3

147

D:\Mp3\fichier.mp3

156

D:\Mp3\fichier.mp3

263

D:\Mp3\fichier.mp3

391

D:\Mp3\fichier.mp3

409

D:\Mp3\fichier.mp3

419

D:\Mp3\fichier.mp3

432

D:\Mp3\fichier.mp3

537

D:\Mp3\fichier.mp3

1355

D:\Mp3\fichier.mp3

2172

D:\Mp3\fichier.mp3

2213

D:\Mp3\fichier.mp3

2221

D:\Mp3\fichier.mp3

537

2221

1355

409

391

2213

263

119

147

432

156

2172

419



Je voudrais que l'es chansons soient remises en ordre grace à leur identifiant et la l'ordre de la liste...



Voila !

Merci !
Messages postés
897
Date d'inscription
jeudi 6 juin 2002
Statut
Membre
Dernière intervention
26 juillet 2007
2
Salut,



bon, alors entre la liste des fichiers et l'ordre, je peux mettre n'importe quoi, ya pas de problème à ce niveau la.

Mais ca va planter ta méthode. Imaginons que j'ai deux fois le même morceau à la suite, et hop, c'est mort.

Sinon, je ne comprends pas pourquoi tu mets ":"



Est ce que je peux t'envoyer ma source pour que tu comprennes?



Merci
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
pas de problème tu peux mettre autant fois le même morceau dans la Liste ça ne gêne pas.
le seul plantage que je vois c'est si la liste ne comprend qu'un seul numéro et là le programme se plante dans la deuxième lecture ...

Daniel
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
j'ai raccourci la deuxième partie du programme:

Private Sub Command2_Click()
Dim Buffer As String
Dim Canal As Integer
Dim i As Integer

For i = 0 To List1.ListCount - 1
Buffer = Buffer & List1.List(i) & vbCrLf
Next

Buffer = Replace(Buffer, "<key>Track ID</key>", "")
Buffer = ......
Buffer = ......

Dialog2.Flags = cdlOFNOverwritePrompt + cdlOFNNoReadOnlyReturn
Dialog2.Filter = "Playlists *.m3u (*.m3u)|*.m3u"
Dialog2.DialogTitle = "Fichier m3u à enregistrer sous..."
Dialog2.ShowSave

Dialog2.ShowSave
Dialog2.FileTitle = "Fichier m3u à enregistrer sous..."

Canal = FreeFile
Open Dialog2.FileName For Binary Access Write As #Canal
Put Canal, , Buffer
Close #Canal

Daniel