bonjour
vous trouverez ci joint quelques exemples pour piloter Windows Media Player depuis Excel
la source utilisée :
Ce lien n'existe plus
(il s'agit de codes JScript que j'ai essayé d'adapter )
Testé avec Excel2002 et Windows Média Player 10.0
necessite d'activer la reference Windows Media Player
le document comporte 4 parties :
Piloter une séquence musicale spécifique
Piloter une playList ( gestion de plusieurs séquences musicales dans une session)
Visualiser une séquence vidéo ( un seul exemple tres simple )
L'objet Windows Media Player inséré dans une feuille ou dans un UserForm
remarque :
si vous faites une fausse manip et qu'une macro plante , il est possible que vous ne puissiez pas arrêter la séquence musicale avant la fin .
dans ce cas , sauvegardez vos données et fermer Excel : tout devrait rentrer dans l'ordre
@@@@@ Gérer une séquence musicale @@@@@
Démarrer et arreter une séquence musicale
Option Explicit
Dim Wmp As WindowsMediaPlayer
'necessite d'activer la reference Windows Media Player
'michelxld le 06.08.2005
'pour le forum https://www.excel-downloads.com/
Sub jouerMediaPlayer()
Set Wmp = CreateObject('WMPlayer.OCX.7')
Wmp.URL = 'C:\\monFichier.mp3'
Wmp.Controls.Play
End Sub
Les procédures qui suivent supposent que la macro 'jouerMediaPlayer' a préalablement été lancée et se trouve active
Fermer la session Windows Media Player en cours
Sub arreterMediaPlayer()
If Wmp Is Nothing Then Exit Sub
Wmp.Controls.stop
End Sub
Afficher la durée de la séquence musicale en cours
Sub dureeSequence()
Dim ValMin As Double, ValSec As Double, S As Double
S = Wmp.currentMedia.Duration
ValMin = Application.WorksheetFunction.RoundDown((S / 60), 0)
ValSec = Application.WorksheetFunction.RoundDown(S, 0) - (ValMin * 60)
MsgBox Format(ValMin, '00') & ':' & Format(ValSec, '00')
End Sub
Effectuer une pause de 5 secondes dans la séquence musicale
Sub pauseMediaPlayer()
Dim t As Date
If Wmp Is Nothing Then Exit Sub
Wmp.Controls.Pause
'
'temporisation de 5 secondes
t = Timer + 5: Do Until Timer > t: DoEvents: Loop
'pour relancer
Wmp.Controls.Play
End Sub
vérifier si l'action 'Pause' peut etre appliquée
( renvoie Vrai ou faux )
Sub verfieStatut_Pause()
'vérifie si l'action 'pause' peut etre appliquée ( renvoie Vrai ou Faux )
MsgBox Wmp.Controls.isAvailable('Pause')
End Sub
Afficher le statut de Windows Media Player
Sub afficheStatutWMP()
If Wmp Is Nothing Then Exit Sub
MsgBox Wmp.Status
End Sub
Afficher le statut de Windows Media Player ( un autre exemple )
Sub statut_WMP()
Select Case Wmp.playState
Case 0: MsgBox 'Undefined'
Case 1: MsgBox 'Stopped'
Case 2: MsgBox 'Paused'
Case 3: MsgBox 'Playing'
Case 4: MsgBox 'ScanForward' 'fast forwarding
Case 5: MsgBox 'ScanReverse' 'fast rewinding
Case 6: MsgBox 'Buffering'
Case 7: MsgBox 'Waiting'
Case 8: MsgBox 'MediaEnded'
Case 9: MsgBox 'Transitioning' 'Preparing new media item
Case 10: MsgBox 'Ready'
Case 11: MsgBox 'Reconnecting'
End Select
End Sub
Désactiver ou Activer le son
Sub desactiverLeSonWMP()
If Wmp Is Nothing Then Exit Sub
Wmp.settings.mute = True
End Sub
Sub activerLeSonWMP()
If Wmp Is Nothing Then Exit Sub
Wmp.settings.mute = False
End Sub
Afficher la version de Windows Media player installée
Sub afficherVersion_WMP()
If Wmp Is Nothing Then Exit Sub
MsgBox Wmp.versionInfo
End Sub
Effectuer une avance rapide sur la séquence , pendant 3 secondes
Sub accelererVitessseSequence_WMP()
Dim t As Date
If Wmp Is Nothing Then Exit Sub
If Wmp.Controls.isAvailable('FastForward') Then Wmp.Controls.fastForward
'
'temporisation de 3 secondes
t = Timer + 3: Do Until Timer > t: DoEvents: Loop
'pour revenir à la vitesse normale
Wmp.Controls.Play
End Sub
Le nom du fichier en cours de lecture
Sub nomFichierEnCourslecture()
Dim Cm As Object
Set Cm = Wmp.currentMedia
MsgBox Cm.Name
End Sub
Informations sur la séquence en cours
Sub informationSequenceEnCours()
MsgBox Wmp.currentMedia.getItemInfo('author')
MsgBox Wmp.currentMedia.getItemInfo('Title')
MsgBox Wmp.currentMedia.getItemInfo('Album')
MsgBox Wmp.currentMedia.getItemInfo('copyright')
MsgBox Wmp.currentMedia.getItemInfo('Artist')
MsgBox Wmp.currentMedia.getItemInfo('Genre')
MsgBox Wmp.currentMedia.getItemInfo('Bitrate') / 1000 & ' kbps'
MsgBox Wmp.currentMedia.getItemInfo('Abstract')
MsgBox Wmp.currentMedia.getItemInfo('bitRate')
MsgBox Wmp.currentMedia.getItemInfo('duration')
End Sub
une autre solution qui liste toutes les informations :
Sub informationsSequence_WMP()
Dim Resultat As String
Dim i As Integer
Dim Cm As WMPLib.IWMPMedia
Set Cm = Wmp.currentMedia
For i = 0 To Cm.attributeCount - 1
If Cm.getItemInfo(Cm.getAttributeName(i)) <> '' Then _
Resultat = Resultat & Cm.getAttributeName(i) & ' : ' & _
Cm.getItemInfo(Cm.getAttributeName(i)) & vbLf
Next
MsgBox Resultat
End Sub
Modifier le volume sonore
(valeurs de 0 à 100 % )
Sub modifierVolumeSon()
Wmp.settings.volume = 50
End Sub
@@@@@ La gestion des PlayList @@@@@
Créer une PlayList de plusieurs séquences et les jouer à la suite
Option Explicit
Dim Wmp As WindowsMediaPlayer
'necessite d'activer la reference Windows Media Player
'michelxld le 06.08.2005
'pour le forum https://www.excel-downloads.com/
Sub ajout_PlusieurSequences_PlayList_Et_Lance_Sequence()
Dim Xwmp As IWMPMedia
Set Wmp = CreateObject('WMPlayer.OCX.7')
Wmp.currentPlaylist.Clear
Set Xwmp = Wmp.newMedia('C:\\essai.mid') 'adapter les noms de fichiers
Wmp.currentPlaylist.insertItem 0, Xwmp
Set Xwmp = Wmp.newMedia('C:\\maMusique.mp3')
Wmp.currentPlaylist.insertItem 1, Xwmp
Set Xwmp = Wmp.newMedia('C:\\Jumbalaya.mid')
Wmp.currentPlaylist.insertItem 2, Xwmp
Wmp.Controls.Play
End Sub
nota:
-------
ne pas oublier de créer un bouton pour arreter la boucle
Sub arreterMediaPlayer()
If Wmp Is Nothing Then Exit Sub
Wmp.Controls.stop
End Sub
Les procédures qui suivent supposent que la macro 'ajout_PlusieurSequences_PlayList_Et_Lance_Sequence' a préalablement été lancée et se trouve active
Pour passer à la séquence suivante ou précédente
Sub passerSequenceSuivante()
Wmp.Controls.Next
End Sub
Sub passerSequencePrecedente()
Wmp.Controls.Previous
End Sub
Supprimer la deuxieme séquence dans la playlist
remarque : l'index du premier élément = 0
Sub supprimer_SequenceDansPlayList()
Dim It As Object
Set It = Wmp.currentPlaylist.Item(1)
Wmp.currentPlaylist.RemoveItem It
End Sub
Lancer une séquence spécifique de la playlist ( exemple le 3 eme item )
Sub JouerUneSequenceSpecifique()
Dim It As Object
Set It = Wmp.currentPlaylist.Item(2)
Wmp.Controls.playItem It
End Sub
Lister le nom des séquences contenues dans la PlayList
Sub Lister_NomDesSequences_DansLaPlayList()
Dim Pl As IWMPPlaylist
Dim j As Integer, i As Integer
Set Pl = Wmp.currentPlaylist
j = Pl.Count
If Not j > 0 Then MsgBox 'il n'y a pas d'éléments dans la playlist'
For i = 0 To j - 1
MsgBox Pl.Item(i).Name
'
'pour afficher la source :
'MsgBox Pl.Item(i).sourceURL
'
Next i
End Sub
Ajouter une séquence musicale dans la PlayList
( la séquence est automatiquement placée à la suite des items existants )
Sub ajouterSequence_dans_playList()
Dim Adx As IWMPMedia
Set Adx = Wmp.newMedia('C:\\maMusique.mp3') 'adapter le chemin
Wmp.currentPlaylist.appendItem Adx
End Sub
Insérer 3 séquences dans la PlayList et en jouer une au hasard
( sans lien direct avec les exemples précédents )
Sub lancerSequenceAleatoire()
Dim NombreItem As Integer, Aleat As Integer
Dim Xwmp As IWMPMedia
Set Wmp = CreateObject('WMPlayer.OCX.7')
Wmp.currentPlaylist.Clear
Set Xwmp = Wmp.newMedia('C:\\fragancia.mid')
Wmp.currentPlaylist.insertItem 0, Xwmp
Set Xwmp = Wmp.newMedia('C:\\maMusique.mp3')
Wmp.currentPlaylist.insertItem 1, Xwmp
Set Xwmp = Wmp.newMedia('C:\\Jumbalaya.mid')
Wmp.currentPlaylist.insertItem 2, Xwmp
'------------------------------------------------------
NombreItem = Wmp.currentPlaylist.Count
Randomize
Aleat = Int((NombreItem * Rnd) + 1)
'------------------------------------------------------
Wmp.currentMedia = Wmp.currentPlaylist.Item(Aleat - 1)
Wmp.Controls.Play
End Sub
@@@@@ Lancer une séquence video et Divers @@@@@
Lancer une video
( sans lien avec les exemples précédents )
Sub lancerUneVideo()
Dim Wmp As WindowsMediaPlayer
Set Wmp = CreateObject('WMPlayer.OCX.7')
Wmp.openPlayer 'C:\\monFilm.mpg'
End Sub
Lister les lecteurs de CD et de DVD installés
Sub listeLecteurs_CD_DVD()
Dim Wmp As WindowsMediaPlayer
Dim iNumDrives As Integer, i As Integer
Dim oThisDrive As IWMPCdrom
Set Wmp = CreateObject('WMPlayer.OCX.7')
iNumDrives = Wmp.cdromCollection.Count
If Not iNumDrives > 0 Then MsgBox 'il n'y a pas de lecteur de CD ou DVD installés .'
For i = 0 To iNumDrives - 1
Set oThisDrive = Wmp.cdromCollection.Item(i)
MsgBox oThisDrive.driveSpecifier
Next i
End Sub
@@@@@ L'objet Windows Media Player inséré dans une feuille ou dans un UserForm @@@@@
Si vous utilisez Windows Média Player apres avoir inséré l'objet dans la feuille ( ou dans un UserForm) , vous pourrez facilement adapter les procédures vues précédemment
par exemple pour lire ou arreter un séquence musicale :
Sub jouerMediaPlayer()
Feuil1.WindowsMediaPlayer1.URL = 'C:\\maMusique.mp3'
Feuil1.WindowsMediaPlayer1.Controls.Play
End Sub
Sub arreterMediaPlayer()
Feuil1.WindowsMediaPlayer1.Controls.stop
End Sub
Voila , plus rien ne vous empeche de créer votre lecteur multi média personnalisé ...;o)
bonne journée
MichelXld
Message édité par: MichelXld, à: 07/08/2005 06:37
vous trouverez ci joint quelques exemples pour piloter Windows Media Player depuis Excel
la source utilisée :
Ce lien n'existe plus
(il s'agit de codes JScript que j'ai essayé d'adapter )
Testé avec Excel2002 et Windows Média Player 10.0
necessite d'activer la reference Windows Media Player
le document comporte 4 parties :
Piloter une séquence musicale spécifique
Piloter une playList ( gestion de plusieurs séquences musicales dans une session)
Visualiser une séquence vidéo ( un seul exemple tres simple )
L'objet Windows Media Player inséré dans une feuille ou dans un UserForm
remarque :
si vous faites une fausse manip et qu'une macro plante , il est possible que vous ne puissiez pas arrêter la séquence musicale avant la fin .
dans ce cas , sauvegardez vos données et fermer Excel : tout devrait rentrer dans l'ordre
@@@@@ Gérer une séquence musicale @@@@@
Démarrer et arreter une séquence musicale
Option Explicit
Dim Wmp As WindowsMediaPlayer
'necessite d'activer la reference Windows Media Player
'michelxld le 06.08.2005
'pour le forum https://www.excel-downloads.com/
Sub jouerMediaPlayer()
Set Wmp = CreateObject('WMPlayer.OCX.7')
Wmp.URL = 'C:\\monFichier.mp3'
Wmp.Controls.Play
End Sub
Les procédures qui suivent supposent que la macro 'jouerMediaPlayer' a préalablement été lancée et se trouve active
Fermer la session Windows Media Player en cours
Sub arreterMediaPlayer()
If Wmp Is Nothing Then Exit Sub
Wmp.Controls.stop
End Sub
Afficher la durée de la séquence musicale en cours
Sub dureeSequence()
Dim ValMin As Double, ValSec As Double, S As Double
S = Wmp.currentMedia.Duration
ValMin = Application.WorksheetFunction.RoundDown((S / 60), 0)
ValSec = Application.WorksheetFunction.RoundDown(S, 0) - (ValMin * 60)
MsgBox Format(ValMin, '00') & ':' & Format(ValSec, '00')
End Sub
Effectuer une pause de 5 secondes dans la séquence musicale
Sub pauseMediaPlayer()
Dim t As Date
If Wmp Is Nothing Then Exit Sub
Wmp.Controls.Pause
'
'temporisation de 5 secondes
t = Timer + 5: Do Until Timer > t: DoEvents: Loop
'pour relancer
Wmp.Controls.Play
End Sub
vérifier si l'action 'Pause' peut etre appliquée
( renvoie Vrai ou faux )
Sub verfieStatut_Pause()
'vérifie si l'action 'pause' peut etre appliquée ( renvoie Vrai ou Faux )
MsgBox Wmp.Controls.isAvailable('Pause')
End Sub
Afficher le statut de Windows Media Player
Sub afficheStatutWMP()
If Wmp Is Nothing Then Exit Sub
MsgBox Wmp.Status
End Sub
Afficher le statut de Windows Media Player ( un autre exemple )
Sub statut_WMP()
Select Case Wmp.playState
Case 0: MsgBox 'Undefined'
Case 1: MsgBox 'Stopped'
Case 2: MsgBox 'Paused'
Case 3: MsgBox 'Playing'
Case 4: MsgBox 'ScanForward' 'fast forwarding
Case 5: MsgBox 'ScanReverse' 'fast rewinding
Case 6: MsgBox 'Buffering'
Case 7: MsgBox 'Waiting'
Case 8: MsgBox 'MediaEnded'
Case 9: MsgBox 'Transitioning' 'Preparing new media item
Case 10: MsgBox 'Ready'
Case 11: MsgBox 'Reconnecting'
End Select
End Sub
Désactiver ou Activer le son
Sub desactiverLeSonWMP()
If Wmp Is Nothing Then Exit Sub
Wmp.settings.mute = True
End Sub
Sub activerLeSonWMP()
If Wmp Is Nothing Then Exit Sub
Wmp.settings.mute = False
End Sub
Afficher la version de Windows Media player installée
Sub afficherVersion_WMP()
If Wmp Is Nothing Then Exit Sub
MsgBox Wmp.versionInfo
End Sub
Effectuer une avance rapide sur la séquence , pendant 3 secondes
Sub accelererVitessseSequence_WMP()
Dim t As Date
If Wmp Is Nothing Then Exit Sub
If Wmp.Controls.isAvailable('FastForward') Then Wmp.Controls.fastForward
'
'temporisation de 3 secondes
t = Timer + 3: Do Until Timer > t: DoEvents: Loop
'pour revenir à la vitesse normale
Wmp.Controls.Play
End Sub
Le nom du fichier en cours de lecture
Sub nomFichierEnCourslecture()
Dim Cm As Object
Set Cm = Wmp.currentMedia
MsgBox Cm.Name
End Sub
Informations sur la séquence en cours
Sub informationSequenceEnCours()
MsgBox Wmp.currentMedia.getItemInfo('author')
MsgBox Wmp.currentMedia.getItemInfo('Title')
MsgBox Wmp.currentMedia.getItemInfo('Album')
MsgBox Wmp.currentMedia.getItemInfo('copyright')
MsgBox Wmp.currentMedia.getItemInfo('Artist')
MsgBox Wmp.currentMedia.getItemInfo('Genre')
MsgBox Wmp.currentMedia.getItemInfo('Bitrate') / 1000 & ' kbps'
MsgBox Wmp.currentMedia.getItemInfo('Abstract')
MsgBox Wmp.currentMedia.getItemInfo('bitRate')
MsgBox Wmp.currentMedia.getItemInfo('duration')
End Sub
une autre solution qui liste toutes les informations :
Sub informationsSequence_WMP()
Dim Resultat As String
Dim i As Integer
Dim Cm As WMPLib.IWMPMedia
Set Cm = Wmp.currentMedia
For i = 0 To Cm.attributeCount - 1
If Cm.getItemInfo(Cm.getAttributeName(i)) <> '' Then _
Resultat = Resultat & Cm.getAttributeName(i) & ' : ' & _
Cm.getItemInfo(Cm.getAttributeName(i)) & vbLf
Next
MsgBox Resultat
End Sub
Modifier le volume sonore
(valeurs de 0 à 100 % )
Sub modifierVolumeSon()
Wmp.settings.volume = 50
End Sub
@@@@@ La gestion des PlayList @@@@@
Créer une PlayList de plusieurs séquences et les jouer à la suite
Option Explicit
Dim Wmp As WindowsMediaPlayer
'necessite d'activer la reference Windows Media Player
'michelxld le 06.08.2005
'pour le forum https://www.excel-downloads.com/
Sub ajout_PlusieurSequences_PlayList_Et_Lance_Sequence()
Dim Xwmp As IWMPMedia
Set Wmp = CreateObject('WMPlayer.OCX.7')
Wmp.currentPlaylist.Clear
Set Xwmp = Wmp.newMedia('C:\\essai.mid') 'adapter les noms de fichiers
Wmp.currentPlaylist.insertItem 0, Xwmp
Set Xwmp = Wmp.newMedia('C:\\maMusique.mp3')
Wmp.currentPlaylist.insertItem 1, Xwmp
Set Xwmp = Wmp.newMedia('C:\\Jumbalaya.mid')
Wmp.currentPlaylist.insertItem 2, Xwmp
Wmp.Controls.Play
End Sub
nota:
-------
ne pas oublier de créer un bouton pour arreter la boucle
Sub arreterMediaPlayer()
If Wmp Is Nothing Then Exit Sub
Wmp.Controls.stop
End Sub
Les procédures qui suivent supposent que la macro 'ajout_PlusieurSequences_PlayList_Et_Lance_Sequence' a préalablement été lancée et se trouve active
Pour passer à la séquence suivante ou précédente
Sub passerSequenceSuivante()
Wmp.Controls.Next
End Sub
Sub passerSequencePrecedente()
Wmp.Controls.Previous
End Sub
Supprimer la deuxieme séquence dans la playlist
remarque : l'index du premier élément = 0
Sub supprimer_SequenceDansPlayList()
Dim It As Object
Set It = Wmp.currentPlaylist.Item(1)
Wmp.currentPlaylist.RemoveItem It
End Sub
Lancer une séquence spécifique de la playlist ( exemple le 3 eme item )
Sub JouerUneSequenceSpecifique()
Dim It As Object
Set It = Wmp.currentPlaylist.Item(2)
Wmp.Controls.playItem It
End Sub
Lister le nom des séquences contenues dans la PlayList
Sub Lister_NomDesSequences_DansLaPlayList()
Dim Pl As IWMPPlaylist
Dim j As Integer, i As Integer
Set Pl = Wmp.currentPlaylist
j = Pl.Count
If Not j > 0 Then MsgBox 'il n'y a pas d'éléments dans la playlist'
For i = 0 To j - 1
MsgBox Pl.Item(i).Name
'
'pour afficher la source :
'MsgBox Pl.Item(i).sourceURL
'
Next i
End Sub
Ajouter une séquence musicale dans la PlayList
( la séquence est automatiquement placée à la suite des items existants )
Sub ajouterSequence_dans_playList()
Dim Adx As IWMPMedia
Set Adx = Wmp.newMedia('C:\\maMusique.mp3') 'adapter le chemin
Wmp.currentPlaylist.appendItem Adx
End Sub
Insérer 3 séquences dans la PlayList et en jouer une au hasard
( sans lien direct avec les exemples précédents )
Sub lancerSequenceAleatoire()
Dim NombreItem As Integer, Aleat As Integer
Dim Xwmp As IWMPMedia
Set Wmp = CreateObject('WMPlayer.OCX.7')
Wmp.currentPlaylist.Clear
Set Xwmp = Wmp.newMedia('C:\\fragancia.mid')
Wmp.currentPlaylist.insertItem 0, Xwmp
Set Xwmp = Wmp.newMedia('C:\\maMusique.mp3')
Wmp.currentPlaylist.insertItem 1, Xwmp
Set Xwmp = Wmp.newMedia('C:\\Jumbalaya.mid')
Wmp.currentPlaylist.insertItem 2, Xwmp
'------------------------------------------------------
NombreItem = Wmp.currentPlaylist.Count
Randomize
Aleat = Int((NombreItem * Rnd) + 1)
'------------------------------------------------------
Wmp.currentMedia = Wmp.currentPlaylist.Item(Aleat - 1)
Wmp.Controls.Play
End Sub
@@@@@ Lancer une séquence video et Divers @@@@@
Lancer une video
( sans lien avec les exemples précédents )
Sub lancerUneVideo()
Dim Wmp As WindowsMediaPlayer
Set Wmp = CreateObject('WMPlayer.OCX.7')
Wmp.openPlayer 'C:\\monFilm.mpg'
End Sub
Lister les lecteurs de CD et de DVD installés
Sub listeLecteurs_CD_DVD()
Dim Wmp As WindowsMediaPlayer
Dim iNumDrives As Integer, i As Integer
Dim oThisDrive As IWMPCdrom
Set Wmp = CreateObject('WMPlayer.OCX.7')
iNumDrives = Wmp.cdromCollection.Count
If Not iNumDrives > 0 Then MsgBox 'il n'y a pas de lecteur de CD ou DVD installés .'
For i = 0 To iNumDrives - 1
Set oThisDrive = Wmp.cdromCollection.Item(i)
MsgBox oThisDrive.driveSpecifier
Next i
End Sub
@@@@@ L'objet Windows Media Player inséré dans une feuille ou dans un UserForm @@@@@
Si vous utilisez Windows Média Player apres avoir inséré l'objet dans la feuille ( ou dans un UserForm) , vous pourrez facilement adapter les procédures vues précédemment
par exemple pour lire ou arreter un séquence musicale :
Sub jouerMediaPlayer()
Feuil1.WindowsMediaPlayer1.URL = 'C:\\maMusique.mp3'
Feuil1.WindowsMediaPlayer1.Controls.Play
End Sub
Sub arreterMediaPlayer()
Feuil1.WindowsMediaPlayer1.Controls.stop
End Sub
Voila , plus rien ne vous empeche de créer votre lecteur multi média personnalisé ...;o)
bonne journée
MichelXld
Message édité par: MichelXld, à: 07/08/2005 06:37