Quizz musical

Belsebou

XLDnaute Nouveau
...le retour puisque certaines discussions du 11/12 ont disparu
Je reprends donc ce que j'avais énoncé et reçu:

Bonjour et merci à ceux qui s'intéresseront à ma demande,
Pour les fêtes de fin d'année je souhaitais faire un petit programme sur le principe suivant:
1/ un répertoire avec des musiques/chansons en MP3 ou WMA...
2/ un programme sous excel qui lancerait d'une façon aléatoire les musiques de ce répertoire (en évitant de répéter celles déjà lancées) quand on appuie sur un bouton.
3/ un bouton qui permet d'afficher la solution du genre: titre/interprète/...

pour le répertoire 1 je sais faire
pour lancer une musique je sais presque faire: j'ai récupérer sur le forum des idées du genre;

Sub PlayOn()
Song = "D:\TEST.mp3"
Call PlaySong(True)
End Sub

mais avec ça je lance toujours la même musique...
ma question est donc la suivante:
comment lancer d'une façon aléatoire une chanson/musique d'un répertoire donné?

pour le point 3 si vous avez des suggestions je reste ouvert à toutes propositions honnêtes et respectables :rolleyes:

amicalement,************
Titre : Re : Jeux de chansons
Envoyé par : job75
Le : 11/12/2009 à 18h00

Bonsoir Belsebou,

Perso je créerais un tableau constitué de la manière suivante :

- colonne A => le nom du fichier son

- colonne B => vide au départ, elle est destinée à recevoir un "X" pour chaque fichier son exécuté

- colonne C => titres

- colonne D => interprètes, etc...

Puis je ferais une macro qui :

- tirerait au sort une ligne du tableau (plusieurs exemples sur ce forum), en refaisant un tirage si la colonne B contient "X"

- afficherait une MsgBox [*Edit* : ou un UserForm] pour indiquer le titre etc...

- exécuterait le fichier son

- cocherait la colonne B

- puis répèterait tout ça jusqu'à ce que tous les fichiers soient cochés.

A+************
Titre : Re : Jeux de chansons
Envoyé par : kllmoon
Le : 11/12/2009 à 19h09

Salut Belzebou, comme tu es nouveau, voici pour t'aider à débuter :


Code :
---------
Dim variable As Integer 'ceci est ton numéro au hazard
Dim variable2 As String 'ceci sera le nom de ta chanson en collonne A
Dim x As Integer ' x et y servent à vérifier si toutes les chansons ont été jouées
Dim y As Integer
x = [COUNTA(A1:A6000)]
y = [COUNTA(B1:B6000)]
If x = y Then Columns("B:B").ClearContents
' si les chansons ont toutes été jouées alors on repart le compte à zéro, s'il y a autant de x que de noms de chanson
1: variable = Int((10 - 1 + 1) * Rnd + 1)
' c'est ici que l'on pige au hazard
If Range("B" & variable).Value = "x" Then GoTo 1
' si le hazard tombe sur un x on recommence
variable2 = Range("A" & variable).Value
Range("B" & variable).Value = "x"
' insère ici le code pour jouer ta chanson avec le format Song = "D:\" & variable2 & ".mp3"
---------
ajout modif : si tu mets ta colonne B avec la police en blanc alors ça ne paraît même pas et c'est plus propre ;)************

Titre : Re : Jeux de chansons
Envoyé par : job75
Le : 11/12/2009 à 19h23

Salut kllmoon,

Juste un lapsus je pense :) au lieu de :

variable = Int((10 - 1 + 1) * Rnd + 1)

il faut utiliser :

variable = Int(x * Rnd + 1)
A+

Je remercie donc job75 et kllmoon pour leurs premières contributions même s'ils ne répondent pas tout à fait à mon problème:
comment lancer d'une façon aléatoire une chanson/musique d'un répertoire donné?
 

JNP

XLDnaute Barbatruc
Re : Quizz musical

Bonsoir Belsebou :),
Pour commencer, il faudrait que tu postes la sub PlaySong, que l'on sache ce qu'il y a dedans...
Ensuite, les réponses correspondent bien à ce que tu cherches, vu que tu as le chemin Song à la fin de la macro qui doit te servir à lancer la chanson aléatoire, à condition bien sûr que tu ait tous les chemins dans la colonne A.
Enfin, pour ton N°3:
Code:
Sub Infos()
Set myShell = CreateObject("Shell.Application")
Set myFolder = myShell.Namespace("Chemin du dossier")
Set myFile = myFolder.Items.Item("Nom du fichier")
For i = 1 To 21
MsgBox "N°" & i & ": " & myFolder.GetDetailsOf(myFile, i)
Next i
End Sub
te permettra de récupérer les infos, dont l'artiste et le nom (si tes fichiers sont biens renseignés...)
Pour remplir ta colonne A, il te suffit d'une petite macro décrivant les dossiers et sous dossiers.
Bon courage :cool:
 

Belsebou

XLDnaute Nouveau
Re : Quizz musical

Bonsoir Belsebou :),
Pour commencer, il faudrait que tu postes la sub PlaySong, que l'on sache ce qu'il y a dedans...
Ensuite, les réponses correspondent bien à ce que tu cherches, vu que tu as le chemin Song à la fin de la macro qui doit te servir à lancer la chanson aléatoire, à condition bien sûr que tu ait tous les chemins dans la colonne A.

Merci de ta réponse JPN
N'y a-t-il pas un moyen pour éviter de resaisir tout dans un fichier excel.
Je voudrais en fait aller piocher dans un répertoire qui contient des MP3 avec des noms de fichier du type "nomchanteur_nomchanson.mp3" sans être obliger de tout retaper dans excel

Sinon ce que j'ai trouvé sur le forum pour lancer un mp3 est ci dessous:
Code:
'Michel Pierron MPFE 2004
Private Declare Function mciSendString Lib "winmm.dll" Alias "mciSendStringA" _
 (ByVal lpstrCommand As String, ByVal lpstrReturnString As String _
, ByVal uReturnLength As Long, ByVal hwndCallback As Long) As Long

Private Declare Function GetShortPathName Lib "kernel32" Alias _
 "GetShortPathNameA" (ByVal lpszLongPath As String _
, ByVal lpszShortPath As String, ByVal lBuffer As Long) As Long
Private Song As String

Sub PlayOn()
Song = "D:\TEST.mp3"
Call PlaySong(True)
End Sub

Sub PlayOff()
Call PlaySong(False)
End Sub

Sub PlayPauseReprise()
Dim msg As String * 255
Static iPos As Long
Static nb As Integer
If nb Then
PlaySong True, iPos
Else
mciSendString "status MPFE position", msg, 255, 0
iPos = Str(msg)
mciSendString "Pause MPFE", 0, 0, 0
End If
nb = Not nb
End Sub

Private Sub PlaySong(Play As Boolean, Optional Reprise As Long = 0)
On Error Resume Next
Call mciSendString("Stop MPFE", 0&, 0, 0)
Call mciSendString("Close MPFE", 0&, 0, 0)
If Not Play Then Exit Sub
If Song = "" Or Dir(Song) = "" Then Exit Sub
Song = GetShortPath(Song)
Call mciSendString("Open " & Song & " Alias MPFE", 0&, 0, 0)
Call mciSendString("play MPFE from " & Reprise, 0&, 0, 0)
End Sub

Private Function GetShortPath(strFileName As String) As String
Dim lngRes As Long, strPath As String
strPath = String(165, 0)
lngRes = GetShortPathName(strFileName, strPath, 164)
GetShortPath = Left(strPath, lngRes)
End Function
 

JNP

XLDnaute Barbatruc
Re : Quizz musical

Re :),
Comme je l'ai écrit
Pour remplir ta colonne A, il te suffit d'une petite macro décrivant les dossiers et sous dossiers.
Par contre je ne l'ai pas sous la main... Il faudrait faire une recherche avec Dir* sur le forum...
Mais tu peux déjà rentrer quelques chemins, tester nos différents codes et nous dire...
Pour choisir la chanson, je supprimerais
Code:
Sub PlayOn()
[B][COLOR=red]Song = "D:\TEST.mp3"[/COLOR][/B]
Call PlaySong(True)
End Sub
ce qui te permettrait d'utiliser
Code:
' insère ici le code pour jouer ta chanson avec le format Song = "D:\" & variable2 & ".mp3"
A + :cool:
 

Belsebou

XLDnaute Nouveau
Re : Quizz musical

Merci JPN pour ces conseils que j'ai tenté de mettre en application.
J'arrive donc maintenant:
- à lister les musiques de mon répertoire que je place en colonne A
- à convertir ce résultat dans 2 colonnes afin d'obtenir le nom en C et le titre en D
- ta macro pour faire un choix semble fonctionner puisque des croix apparaissent en B
Par contre je n'arrive pas à relier ce choix aléatoire à l'exécution de la macro pour lancer la musique.
Je joins mon fichier excel ainsi qu'un exemple de répertoire de musique
Je n'ai pas encore tester l'affichage du nom et du titre de la musique jouée.
amicalement
Même avec 3 MP3 le fichier est trop gros pour être en pièce jointe (je n'ai pas eu le temps de couper les morceaux...)
 

Pièces jointes

  • Quizz Musical.xlsm
    29.2 KB · Affichages: 111
  • Quizz Musical.xlsm
    29.2 KB · Affichages: 117
  • Quizz Musical.xlsm
    29.2 KB · Affichages: 118

JNP

XLDnaute Barbatruc
Re : Quizz musical

Re :),
Ta macro pour faire un choix semble fonctionner puisque des croix apparaissent en B
Rendons à César ce qui est à César, il y a eu un peu de perte sur le fil suite à un problème technique, mais si ma mémoire est bonne, c'est Hoerwind qui t'avais fait la macro de choix aléatoire ;)
Par contre je n'arrive pas à relier ce choix aléatoire à l'exécution de la macro pour lancer la musique.
Tu écris Song = "D:\MUSIQUIZZ\" & variable2 & ".mp3" or dans ta colonne, l'extension .mp3 est déjà présente, donc aussi présente dans la variable2, l'écriture exacte serait Song = "D:\MUSIQUIZZ\" & variable2.
Je n'ai pas encore tester l'affichage du nom et du titre de la musique jouée.
Dépêche toi, le réveillon, c'est bientôt :p
Bon courage :cool:
 

Belsebou

XLDnaute Nouveau
Re : Quizz musical

Merci JPN
c'est effectivement le MP3 qui jouait les troubles fêtes...
Sinon j'ai testé ta macro pour l'affichage
Code:
Sub Infos()
Set myShell = CreateObject("Shell.Application")
Set myFolder = myShell.Namespace("D:\MUSIQUIZZ\")
Set myFile = myFolder.Items.Item("& variable2 & ")
For i = 1 To 21
MsgBox "N°" & i & ": " & myFolder.GetDetailsOf(myFile, i)
Next i
End Sub
mais le résultat est une suite de MsgBox N°1 jusqu'à 21 qui me dit juste N°1:taille puis après validation, N°2:type...mais sans aucun renseignement sur le fichier musique joué
je pense que mon problème vient de variable2 que je réutilise...
 

Belsebou

XLDnaute Nouveau
Re : Quizz musical

:):):):)
Je suis content car j'ai réussi en suivant tes conseils et en rajoutant des bouts de programmes glanés ici et là.
Mine de rien j'ai réussi à faire plus ou moins ce que je recherchais et je te remercie ainsi que ceux qu'y ont contribués de près ou de loin à ce bout de programme.
Je joins mon quizz qui pourrait être complété parce que tout n'est peut-être pas académique:rolleyes:
Meilleurs voeux
 

Pièces jointes

  • Quizz Musical.xlsm
    44.6 KB · Affichages: 146
  • Quizz Musical.xlsm
    44.6 KB · Affichages: 155
  • Quizz Musical.xlsm
    44.6 KB · Affichages: 154

Statistiques des forums

Discussions
298 812
Messages
1 971 978
Membres
203 566
dernier inscrit
excel-92