VBA Excel : exécuter deux procédures en parallèle

Résolu/Fermé
GrandJean - 22 nov. 2014 à 20:14
 GrandJean - 24 nov. 2014 à 09:23
Bonsoir,

Dans un UF, j'utilise un webbrowser pour afficher un gif animé. En parallèle, je lance un son illustrant l'animation. Mon souci est que, pendant que le son est joué, l'animation du gif est bloquée. Y-a-t-il un moyen pour que les deux s'exécute en parallèle ? J'ai fait des recherches sur les forum, notamment du côté des multithread, mais sans trop comprendre si cela pouvait m'aider ou pas.
Pour info, voici le code type que j'utilise pour ces deux instructions, dans la même procédure :
WebBrowser1.Navigate "about:<html><CENTER><body scroll='no'>" & "<img src='" & ActiveWorkbook.Path & "\Images\Rep_Chrono.GIF'></img></body></html>"

DoEvents (j'ai mis doevents ici pour que l'affichage du gif se fasse avant l'exécution du son. Question d'esthétique.)
Application.ExecuteExcel4Macro "SOUND.PLAY(,""" & ActiveWorkbook.Path & "\Sons\test.wav"")"

Merci par avance pour vos idées.
GrandJean




A voir également:

4 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 23/11/2014 à 08:21
Bonjour,

Les macros XL4 sont bien pratiques mais souvent limitées

essaies ceci à adapter
Private Declare Function PlaySound32 Lib "winmm.dll" Alias "PlaySoundA" (ByVal IpszName As String, ByVal hModule As Long, ByVal dwFlags As Long) As Long

Const SND_SYNC = &H0
Const SND_ASYNC = &H1
Const SND_FILENAME = &H20000

' archives MPFE

Sub PlayWAV()
' snd_async: son asynchrone (la musique n'arrete pas le programme) snd_sync: arrete le prog
If Application.CanPlaySounds Then
    WAVFile = ThisWorkbook.Path & "\" & "coluche.wav"
    Call PlaySound32(WAVFile, 0&, SND_ASYNC Or SND_FILENAME)
Else
    Exit Sub
End If

End Sub


Michel
0
Bonjour Michel,

Merci d'avoir pris le temps de regarder ma question et de m'avoir apporté une réponse claire qui, en plus, fonctionne ! (humour du dimanche...)

Je ne connaissais pas cette fonction. J'ai pu l'adapter sans problème. J'ai déclaré la fonction et les variables en public, dans un module, puisque je l'utiliserai dans plusieurs UF.

Juste une question : c'est l'utilisateur qui décide ou non d'avoir du son. Cela donne une variable nommée ambiance.
J'ai donc remplacé:
"If Application.CanPlaySounds" par "if ambiance"
Cela fonctionne mais y a t-il un risque ou ma condition peut-elle remplacer sans problème celle que tu avais indiqué ?

Bon appétit
Jean
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
23 nov. 2014 à 13:32
Cela fonctionne mais y a t-il un risque

Je ne pense pas
dim ambiance as boolean
if ambiance then can.....
0
Bien noté.

Encore merci
Bonne journée
0