Solidworks VBA speech

Pour résumer tu as deux solutions :
Soit tu mets WaitUntilDone avant EndSub
Soit tu lances ta fonction sur un autre thread

@Konti dans un autre thread, cela ne fonctionne pas non plus car il interrompt le texte dès la fin de la fonction ou du sub appelé.
Et si tu lances non asynchrone il attends la fins de la fonction ou du sub pour continuer.

j’ai finis par trouver

Function Msg_sonore(sText As String) As Boolean
'Permet de lire le message de manière asynchrone en passant par .vbs
Dim swApp As Object
Dim fso, Dossier, Fichier, f
Dim oWsh As Variant
Set swApp = Application.SldWorks
Set oWsh = CreateObject("Shell.Application")
Set fso = CreateObject("Scripting.FileSystemObject")

Dossier = Left(swApp.GetCurrentMacroPathName, InStrRev(swApp.GetCurrentMacroPathName, "\"))
Fichier = "PART_MEP_suppr contraintes.vbs"
If Dir(Dossier & Fichier) <> "" Then fso.DeleteFile Dossier & Fichier

Set f = fso.CreateTextFile(Dossier & Fichier, True)
f.WriteLine "'Fichier temporaire, pour lecture message sonore asynchrone"
f.WriteLine "Dim speech"
f.WriteLine "Set speech = CreateObject(""SAPI.SpVoice"")"
f.WriteLine "speech.Speak """ & sText & """"
f.Close

oWsh.ShellExecute Dossier & Fichier
Set oWsh = Nothing

End Function
1 « J'aime »