1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
| Dim Msg 'pour verification
Dim FichieMusiqueM3u 'Fichier source non aléatoire
Dim TblFichieMusiqueM3u() 'tableau du fichier source non aléatoire
'Dim TblFichieMusiqueM3u 'tableau du fichier source non aléatoire
Dim TableauFinal()'tableau d'index aléatoires
'---------------------------------------Procedures--------------------------------------------
Sub RecupeFileList(folderspec)
Dim fso, f, f1, fc, T
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.GetFolder(folderspec)
Set fc = f.Files
For Each f1 in fc
If Right(f1.name,3) = "mp3" Or Right(f1.name,3) = "mp2" Then
T = T+1
Redim Preserve TblFichieMusiqueM3u(T)
TblFichieMusiqueM3u(T-1) = f1.name
End If
Next
End Sub
'--------------------------------------------------------------------------------------------
Sub SauveFichier(CheminFichierM3u)
Const ForWriting = 2
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject" )
Set f = fso.OpenTextFile(CheminFichierM3u, ForWriting, True)
'ecriture en agglomerant les noms de musique aléatoires, separé par une virgule
f.WriteLine "#EXTM3U"
f.Write Join(Alealiste, vbcrlf)
f.Close
End Sub
'--------------------------------------------------------------------------------------------
Sub TirageAleatoire(MinI,MaxI)
Dim i, Ch, Nb, NbAleatoire
'i pour boucle For ..... Next
'Ch pour créer une chaine de chiffre aleatoire
'Nb = Variant pour splitter la chaine contenant les nombres à choisir
'NbAleatoire = Indice aléatoire pour choisir un élément de la chaine contenant les nombres
ReDim TableauFinal(MaxI - MinI)
'On va générer une chaine partant du premier au dernier chiffre (donc de MinI à MaxI),
'les chiffres étant séparés par une virgule
'Par défaut on aura donc Ch = "5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24" Etc...
Ch = MinI
For i = MinI + 1 To MaxI: Ch = Ch & "," & i: Next
'On met les chiffres dans un tableau issu du split de la chaine contenant tous les nombres
Nb = Split(Ch, ",")
'On tire un nombre x parmi les n éléments
'Si ce nombre n'est pas le dernier de la liste, le nombre d'indice x devient le nombre d'indice n
'Par exemple au premier tirage on tire le 7ème nombre parmi les 20, donc 7 pour mon exemple
'Dans le tableau Nb, on remplace 7 par 24
'Puis on tire un nombre x parmi les n - 1 éléments (donc parmi les 24 de mon tableau Nb),
'ça ne peut pas être 7 puisqu'il a été remplacé par le 24ème
'Si ce nombre n'est pas le n - 1 de la liste, le nombre d'indice x devient le nombre d'indice n - 1
'Etc...
Randomize 'Initialise le générateur de nombres aléatoires
For i = MaxI - MinI To 0 Step -1
NbAleatoire = Int((i + 1) * Rnd)
TableauFinal(MaxI - MinI - i) = Nb(NbAleatoire)
If NbAleatoire < i Then Nb(NbAleatoire) = Nb(i)
Next
End Sub
'--------------------------------------------------------------------------------------------
' *************************** partie principale *********************************************
Dim Alealiste(), T
'Liste des fichier du dossier
RecupeFileList "C:\PersoFrancis\Sources divers\Music MP3 et MP2"
'création d'un tableau d'indice numerique aléatoire
TirageAleatoire 0,UBound(TblFichieMusiqueM3u)
'tableau pour les noms de musiques aléatoires
Redim Alealiste (UBound(TblFichieMusiqueM3u))
'affectation d'un index aléatoire à la liste des musiques
For T = 0 To UBound(TblFichieMusiqueM3u)
Alealiste(TableauFinal(T)) = TblFichieMusiqueM3u(T)
Next
'pour verification
'For T = 0 To UBound(Alealiste)
' Msg = Msg & Alealiste(T)
' if T < UBound(Alealiste) Then Msg = Msg & " , "
'Next
'msgbox msg
SauveFichier "C:\PersoFrancis\En VBScript et HTA\Tirage aleatoire\Alealiste.txt" |
Partager