VBA Excel : exécuter deux procédures en parallèle [Résolu/Fermé]

Signaler
-
 GrandJean -
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




4 réponses

Messages postés
16433
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 avril 2021
3 163
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
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
Messages postés
16433
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
15 avril 2021
3 163
Cela fonctionne mais y a t-il un risque

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

Encore merci
Bonne journée