XL 2010 Lecture video via VBA [RESOLU]

herve62

XLDnaute Barbatruc
Supporter XLD
Bonsoir
J'ai repris 2 appli de 2 ;3 ans et la fonction qui me permettait de lire des vidéos suite à un choix dans une appli ne fonctionne plus ?
Je viens de recréer un petit exemple seul ... idem !
Apparemment celà bloque sur DblQuote ?
Ou alors la fonction WmPlayer n'est plus supportée en 2010 ?
 

Pièces jointes

  • Lect_video.xlsm
    19.5 KB · Affichages: 10

patricktoulon

XLDnaute Barbatruc
allez la même sans fichier intermédiaire avec IE
je code directement dans le document
alors c'est étonnant quand même(en tout cas bien heureux dans ce contexte) I E n'est pa rediriger vers edge
alors en plus en codant directement le code html dans le document je n'est pas le msgbox d'avertissement activx je sais plus quoi

voilà sans lecteur la video est lu dans une page web vierge
demo.gif


VB:
Function WmPlaySound(MySound)    'dans une page web dynamique
    Dim cde, chemin$, x
    cde = "<video controls  width=100% height=100% src=""" & MySound & """ autoplay></video>"
      With CreateObject("internetexplorer.application")
     .Visible = True
     .Width = 600: .Height = 400
        .navigate "about:bank"
    Do While .readystate < 4: DoEvents: Loop
    .document.body.innerhtml = cde
    End With
End Function
 

TooFatBoy

XLDnaute Barbatruc

herve62​

a demandé à lire dans sont fichier (pas sur internet lol)
Il a aussi demandé pourquoi ça bloquait sur "DblQuote" :
Apparemment celà bloque sur DblQuote ?
donc je lui ai donné la fonction DblQuote qu'il avait perdue, et qui consiste en fait simplement à ajouter une guillemet en début de chaîne de caractères et une autre guillemet en fin de chaîne.

Ca permet de ne pas oublier de guillemet comme c'est le cas au message #9 où il manque la guillemet de fermeture de la chaîne. (merci Excel de corriger automatiquement cette petite erreur)
Mais, pour moi, comme pour Staple, la fonction est inutile et elle est avantageusement remplacée par un CHR(34) & devant la chaîne et un & CHR(34) après la chaîne.
 
Dernière édition:

fanch55

XLDnaute Barbatruc
bonjour lionel
allo la lune ici la terre !!!!
c'est une vidéo que @herve62 veut lire alors ton fichier est inutile dans ce contexte
et pour info la video n'est pas lue sur internet elle est lue sur une page web vierge
et mon astuce fonctionne même hors connexion
C'est vrai qu'avec des variables du genre MySound, j'ai failli me gourer également au premier abord ...
 

fanch55

XLDnaute Barbatruc
allez la même sans fichier intermédiaire avec IE
je code directement dans le document
alors c'est étonnant quand même(en tout cas bien heureux dans ce contexte) I E n'est pa rediriger vers edge
alors en plus en codant directement le code html dans le document je n'est pas le msgbox d'avertissement activx je sais plus quoi

voilà sans lecteur la video est lu dans une page web vierge



VB:
Function WmPlaySound(MySound)    'dans une page web dynamique
    Dim cde, chemin$, x
    cde = "<video controls  width=100% height=100% src=""" & MySound & """ autoplay></video>"
      With CreateObject("internetexplorer.application")
     .Visible = True
     .Width = 600: .Height = 400
        .navigate "about:bank"
    Do While .readystate < 4: DoEvents: Loop
    .document.body.innerhtml = cde
    End With
End Function
Salut @patricktoulon ,
Avec "about:blank", c'est mieux ... ;)
Moi j'ai du mettre ma sécurité IE au plus bas pour pouvoir lire les vidéos locales :
1691919186023.png
 

patricktoulon

XLDnaute Barbatruc
bonjour @fanch55
oui tu a raison une faute de frappe
bon j'ai reuni petit a petit en fouillant mes rush d'essais dans mes archives
et je vous en livre quelques unes qui ne sont pas piquées des verts

tout d'abords la sub d'appel(la bouton dans le fichier)
VB:
Private Sub CommandButton1_Click()
ficvideo = "G:\clip et youtube\Lucy  et Martha Thomas\Always Remember Us This Way  From A Star is Born  Lucy Thomas.mp4"
PlayVideo (ficvideo)
End Sub

1°) ok le wmlplayer
VB:
Function PlayVideo(Myvideo)
    Dim WshShell
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Run "wmplayer """ & Myvideo
    Set WshShell = Nothing
End Function

2°) avec VLC
VB:
Function PlayVideo(Myvideo)    'avec VLC(32/64 bits)
    Dim WshShell, A$, B$, C$
    A = "C:\Program Files\VideoLAN\VLC"
    B = "C:\Program Files (x86)\VideoLAN\VLC"
    If Dir(A, vbDirectory) <> "" Then C = A
    If Dir(B, vbDirectory) <> "" Then C = B
    If C = "" Then MsgBox "Vous n'avez pas VLC installé sur votre pc": Exit Function
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.exec C & "\vlc.exe """ & Myvideo
    Set WshShell = Nothing
End Function

3°) avec le lecteur par défaut
VB:
Function PlayVideo(Myvideo)    'ouverture avec le lecteur par defaut
    CreateObject("Shell.Application").Open Myvideo
End Function

voila on a vu les gentilles maintenant on sort du cadre

4°)
lecture dans internet explorer une page web vierge
VB:
Function PlayVideo(Myvideo)    'dans une page web vierge et dynamique dans IE
    Dim cde, chemin$, x
    cde = "<video controls  width=95% height=95% src=""" & Myvideo & """ autoplay></video>"
    With CreateObject("internetexplorer.application")
        .Visible = True
        .Width = 600: .Height = 400
        .navigate "about:blank"
        Do While .readystate < 4: DoEvents: Loop
        .document.body.innerhtml = cde
    End With
End Function

5°) directement dans firefox son plugin fait la chose tout seul
VB:
Function PlayVideo(Myvideo)    'lecture directement dans  firefox
    Dim Fx$
     Fx = "C:\Program Files\Mozilla Firefox\firefox.exe"
    If Dir(Fx) <> "" Then Shell Fx & " " & Chr(34) & Myvideo & Chr(34)
End Function

6°) avec le navigateur par defaut dans une page web dynamique( pour firefox(si c'est le navigateur par defaut) et mp4 il faudra ajouter les mimes)
VB:
Function PlayVideo(Myvideo)    'dans une page web dynamique et lue par le navigateur par defaut
    Dim cde, chemin$, x
    chemin = ThisWorkbook.Path & "\LecteurVideo.html"
    cde = "<video controls  width=100% height=100% src=""" & Myvideo & """ autoplay></video>"
    x = FreeFile: Open chemin For Output As #x: Print #x, cde: Close #x
    CreateObject("Shell.Application").Open (chemin)
End Function

7°)lecture dans une page web dynamique dans firefox(ajouter aussi les mimes dans le code html)
VB:
Function PlayVideo(Myvideo)    'lecture directement dans  firefox dans une page web( ne fonctionne pas
    Dim cde, chemin$, x, Fx$
    chemin = ThisWorkbook.Path & "\LecteurVideo.html"
    cde = "<video controls  width=100% height=100% src=""" & Myvideo & """ autoplay></video>"
    x = FreeFile: Open chemin For Output As #x: Print #x, cde: Close #x
    Fx = "C:\Program Files\Mozilla Firefox\firefox.exe"
    If Dir(Fx) <> "" Then Shell Fx & " " & Chr(34) & chemin & Chr(34)
End Function

comme je vous l'ai dis c'est pas piqué des verts hein 😅

et je dois bien pouvoir en retrouver une ou deux encore

j'ai essayé edge mais je n'ai pas reussi

avec ça si notre ami @herve62 n'arrive pas à lire sa vidéo je mange mon clavier
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
bonjour @TooFatBoy
myvideo est un string le guillemet n'est pas obligé il est implicite en fin de ligne de commande

à tester en changeant le nom du fichier
VB:
Sub Play_Video()
    Dim WshShell
    Myvideo = "G:\clip et youtube\Lucy  et Martha Thomas\Always Remember Us This Way  From A Star is Born  Lucy Thomas.mp4"
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.Run "wmplayer """ & Myvideo
    Set WshShell = Nothing
End Sub
 

patricktoulon

XLDnaute Barbatruc
je l'avais oublié celui là
un wmp dans un userform sans l'ocx
utilisation d'un webbrowser
 

herve62

XLDnaute Barbatruc
Supporter XLD
Bonjour
Merci à tous d evotre implication
J'ai fait le ménage , Wmplayer "merdait" même pour lire ma musique , j'ai fait une RAZ et remis
tout , c'est revenu dans l'ordre ( dblquote était bien une fonction que j'avais oublié de recopier)
@patricktoulon : J'ai aussi un choix d electure de fiches en pdf , ta visioneuse ( normalement c'est VisioNNeuse 😉) pourrait m'intéresser si on pouvait modifier sa taille (USF ) j'ai fait des modif mais l'USF ne bouge pas ? dans l'appli je mets souvent Application.visible False pour avoir l'USF plein écran mais avec le tien ça ne va pas ?
 

fanch55

XLDnaute Barbatruc
Salut @patricktoulon ,
Bizarre, ton classeur fait planter mon excel dès la fin du Userform_Initialize .
Si je commente tout le code sur les controls, je continue même si par la suite le code plante ( pas Excel ) .
En déplaçant tout le code des controls dans l'Userform_Activate, tout va bien .😩

Sauf que ce que tu proposes, c'est une visionneuse Pdf, pas Vidéo .... ;)
 

Statistiques des forums

Discussions
312 216
Messages
2 086 348
Membres
103 194
dernier inscrit
rtison