IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Lecture d'un fichier .mp3 [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

DurDur Lecture d'un fichier .mp3 01/11/2016, 17h16
Invité Bonsoir, Dans cette... 01/11/2016, 23h37
patricktoulon re 02/11/2016, 00h20
unparia Bonjour Il y en a une... 02/11/2016, 07h41
patricktoulon re 02/11/2016, 15h38
SebH37 question relative à la... 01/08/2021, 11h59
jurassic pork hello, la discussion... 01/08/2021, 12h18
SebH37 question relative à la... 01/08/2021, 17h16
Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de DurDur
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2005
    Messages : 256
    Par défaut Lecture d'un fichier .mp3
    Bonjour,

    J'ai réalisé une petite appli avec la possibilité de lire (entendre) le contenu d'une cellule.
    Avec un logiciel de synthèse vocale, j'ai réalisé manuellement pour chaque cellule concernée un fichier mp3.

    Pour lire ce fichier, j'ai essayé deux façons de faire :

    Manière 1 - Dans mon formulaire, j'ai mis un contôle activex et ce qui me gène, c'est qu'à l'ouverture, il y a le message:
    "Cette application est sur le point d'initialiser les contrôles activeX .....", c'est gênant.
    Dans la gestion des paramètres ActiveX, la case "Activer tous les contrôles ..." est bien cochées.

    Donc j'ai essayé cela,

    Manière 2 - Il n'y a pas de contrôle activex dans mon form.
    J'enclenche la lecture à l'aide du code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell(C:\Program Files\Windows Media Player\wmplayer.exe C:\001.mp3")
    Cela fonctionne bien, mais WMP est visible et reste visible après la lecture.

    Avez vous une solution pour l'une ou l'autre de ces manières de procéder ?
    ou avez vous une autre façon de faire ?

    Je suis à votre écoute.

    Merci.

    JCB57

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    Dans cette discussion tu devrais trouver ton bonheur!

    http://www.developpez.net/forums/d16...m/#post8762175

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonsoir
    perso afin de libérer l'application pendant la lecture du son je la li extérieurement a l'aide d'un fichier VBS utilisant l'ocx WMP classic que l'on ne peut plus utiliser en VBA
    je créé donc le vbs et le lance par VBA il se détruit après lecture automatiquement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Sub test()
    son = "H:\mes musique\Amy Mc Donald\Lets Start A Band - Amy Mc Donald -  Album 2008\Amy Mc Donald - Lets Start A Band.mp3"
    joue_le_son son
    End Sub
    Function joue_le_son(son)
         code = code & "fichier= Wscript.ScriptFullName" & vbCrLf
        code = code & " Set wmp = CreateObject(""WMPlayer.OCX"")" & vbCrLf
        code = code & "wmp.settings.autoStart = True" & vbCrLf
        code = code & "wmp.settings.volume = 100" & vbCrLf
        code = code & "wmp.URL = """ & son & """" & vbCrLf
        code = code & "While wmp.Playstate <> 1" & vbCrLf
        code = code & "WScript.Sleep 1" & vbCrLf
        code = code & "Wend" & vbCrLf
        code = code & "Set fso = CreateObject(""Scripting.FileSystemObject"")" & vbCrLf
        code = code & "fso.DeleteFile (fichier)" & vbCrLf
        code = code & "Set fso = Nothing" & vbCrLf
        fichier = ThisWorkbook.Path & "\jouer le son.vbs"
        x = FreeFile
        Open fichier For Output As #x
        Print #x, code
        Close #x
        Set w = CreateObject("Wscript.shell")
        w.Run """" & fichier & """"
    End Function
    voila
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Pour lire ce fichier, j'ai essayé deux façons de faire :
    Il y en a une troisième :
    - création et exécution d'un objet OLE, en dur ou en lien avec un hyperlink (au choix)
    Cela évitera entre autres et les messages disgracieux et l'utilisation de VBS (délibérément inhibé sur certaines machines, dont la mienne)

    Tiens, regarde ce que je viens de bâcler et qui me semble le mieux adapté à ta configuration (sons différents selon cellule) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Application.ScreenUpdating = False 'on veut éviter unj clignotement
       On Error Resume Next ' juste pour le cas où fichier inexistant ou corrompu
     
       'on va maintenant créer un objet OLE se rapportant à un fichier dont
       'le chemin figure en cellule G1 (exemple)
       ActiveSheet.OLEObjects.Add(Filename:=Range("G1").Text, Link:=True).Select ' on le sélectionne
       If Err.Number <> 0 Then ' si fichier inexistant ou corrompu, on abandonne
         Application.ScreenUpdating = True
         MsgBox "Impossible de jouer (fichier inexistant ou corrompu)" & ActiveCell.Text
         Exit Sub
       End If
       Selection.Verb ' on exécute la lecture
       Selection.Delete ' on peut maintenant détruire notre objet OLE
       Application.ScreenUpdating =True
    Tu devrais vite voir comment inclure cela dans ton projet, en fonction de la cellule concernée.

    On évite ainsi à la fois les messages et l'utilisation de VBS (relire mon message précédent à ce sujet).

    EDIT : j'ai corrigé le dernier screenupdating, que j'avais mis (mal réveillé) indûment à) False au lieu de true.

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour unparia

    tout d'abords merci j'avais complètement zappé "verb"

    mais ici on a justement comme résultat ce que le demandeur ne veut pas

    un message non dépendant de Excel s'affiche (voir capture )

    puis ensuite c'est le WMplayer qui s'affiche

    a trop vouloir te protéger tu te supprime des possibilités

    comme tu dis chacun son "manioc"

    Nom : Capture.JPG
Affichages : 3034
Taille : 61,2 Ko
    voila
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre éclairé Avatar de DurDur
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2005
    Messages
    256
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2005
    Messages : 256
    Par défaut
    Bonjour et merci pour vos réponses rapides.

    J'ai installé la suggestion de "PatrickToulon" qui correspond au résultat cherché.
    Auparavant, j'avais trifouillé la base de registre (pas très conseillé), et je ne dormais pas tranquille.
    Maintenant tout est en ordre.

    Il me reste une question : comment arrêter le son si je change de cellule ?

    Merci.

    JCB57

  7. #7
    Membre du Club
    Homme Profil pro
    commercial
    Inscrit en
    Août 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : commercial
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2021
    Messages : 9
    Par défaut question relative à la procédure en .vbs
    Bonjour Patrick,

    J'ai découvert votre proposition en .VBS pour pouvoir lire en fichier son depuis une procédure VBA.
    Débutant dans le domaine j'essaie de saisir le fonctionnement; Il y a une partie qui m'échappe et qui, à priori, semble essentielle pour l'exécution de la lecture du fichier audio :
    "code = code & "While wmp.playstate <> 1" & vbCrLf
    code = code & "WScript.Sleep 1" & vbCrLf
    code = code & "Wend" & vbCrLf"

    Ce que je comprends c'est que l'on dit "tant que l'état de lecture de windows media player n'est pas en mode arrêt, on met l'exécution du .VBS en pause d'une milliseconde";
    Ce que je remarque, lorsque j'ôte cette partie du code, c'est que plus rien ne fonctionne. Mais je ne comprends pas par quel biais cette condition while rend l'exécution du fichier audio possible.

    Pourriez-vous m'éclairer svp ?
    Ca m'aiderait beaucoup

    En vous remerciant

    Citation Envoyé par patricktoulon Voir le message
    Bonsoir
    perso afin de libérer l'application pendant la lecture du son je la li extérieurement a l'aide d'un fichier VBS utilisant l'ocx WMP classic que l'on ne peut plus utiliser en VBA
    je créé donc le vbs et le lance par VBA il se détruit après lecture automatiquement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Sub test()
    son = "H:\mes musique\Amy Mc Donald\Lets Start A Band - Amy Mc Donald -  Album 2008\Amy Mc Donald - Lets Start A Band.mp3"
    joue_le_son son
    End Sub
    Function joue_le_son(son)
         code = code & "fichier= Wscript.ScriptFullName" & vbCrLf
        code = code & " Set wmp = CreateObject(""WMPlayer.OCX"")" & vbCrLf
        code = code & "wmp.settings.autoStart = True" & vbCrLf
        code = code & "wmp.settings.volume = 100" & vbCrLf
        code = code & "wmp.URL = """ & son & """" & vbCrLf
        code = code & "While wmp.Playstate <> 1" & vbCrLf
        code = code & "WScript.Sleep 1" & vbCrLf
        code = code & "Wend" & vbCrLf
        code = code & "Set fso = CreateObject(""Scripting.FileSystemObject"")" & vbCrLf
        code = code & "fso.DeleteFile (fichier)" & vbCrLf
        code = code & "Set fso = Nothing" & vbCrLf
        fichier = ThisWorkbook.Path & "\jouer le son.vbs"
        x = FreeFile
        Open fichier For Output As #x
        Print #x, code
        Close #x
        Set w = CreateObject("Wscript.shell")
        w.Run """" & fichier & """"
    End Function
    voila

  8. #8
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 183
    Par défaut
    hello,
    la discussion commence à dater ( 5 ans) et patrick toulon ça fait longtemps que je ne l'ai pas vu dans le forum. Sinon tu peux essayer ma proposition du message #21.
    Ami calmant, J.P

  9. #9
    Membre du Club
    Homme Profil pro
    commercial
    Inscrit en
    Août 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : commercial
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2021
    Messages : 9
    Par défaut question relative à la procédure en .vbs
    Hello Jurrassic Pork

    Merci pour ta réponse
    . Hélas oui mais ça répondais à mes recherches ^^; de plus vous proposez pas mal de solutions différentes, ce post est très intéressant.

    J'ai bien décortiqué celle de M. Toulon; mais je ne comprends toujours pas pourquoi dans le fichier .VBS il y a ce While et cette mise en pause de l'exécution du script avec le .sleep
    C'est ça, en revanche, qui permet de déclencher la lecture apparemment .. :/

    J'ai commencé à étudier ta proposition mais là bon .. eh bien il ya plein de concepts que je ne connais pas encore; notamment mciSendString, les définitions de variables avec ByVal ..
    Bon je prends le temps de regarder tout ça et faire quelques recherches, afin de voir ce que je peux parvenir à comprendre de moi-même et je reviens avec mes questions

  10. #10
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 183
    Par défaut
    hello,
    pour windows media player il y a cette solution qui peut fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DIM OWMP As Object
     
    Sub JoueSon()
    Set OWMP = CreateObject("new:WMPlayer.OCX.7")
    OWMP.Url = "D:\Musique\MaMusique.mp3"
    End Sub
     
    Sub ArretSon()
    OWMP.Controls.Stop
    End Sub
    '
    OWMP doit être déclaré "globalement" sinon le lecteur est détruit à la sortie de la fonction où il est déclaré.
    Dans le CreateObject si on ne met pas le new: il y a une erreur automation.
    On peut mettre aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set OWMP = CreateObject("new:6BF52A52-394A-11D3-B153-00C04F79FAA6")
    Ami calmant, J.P

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Lecture d'un fichier MP3 et récupération de ses informations
    Par arnolem dans le forum Téléchargez
    Réponses: 0
    Dernier message: 01/10/2011, 08h43
  2. Lecture simultanée de 2 fichiers MP3
    Par mweber_29200 dans le forum C++Builder
    Réponses: 4
    Dernier message: 25/05/2006, 14h07
  3. [MFC]lecture d'un fichier mp3
    Par r0d dans le forum MFC
    Réponses: 6
    Dernier message: 26/01/2006, 02h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo