begin process at 2012 02 10 01:11:19
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

VBScript

 > BORNE MULTIMÉDIA SIMPLISSIME

BORNE MULTIMÉDIA SIMPLISSIME


 Information sur la source

Note :
7,83 / 10 - par 6 personnes
7,83 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :VBScript Classé sous :borne, multimédia, powerpoint, html application Niveau :Débutant Date de création :29/10/2008 Date de mise à jour :19/11/2010 16:14:08 Vu / téléchargé :6 480 / 384

Auteur : piergel

Ecrire un message privé
Commentaire sur cette source (42)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
J'avais besoin pour ma société de mettre en place une borne multimédia dans le hall d'accueil. Le cahier des charge était plutôt réduit :

- diffusion d'une présentation en boucle (style PowerPoint)
- pas d'interactivité (uniquement de l'affichage)
- lancement programmé le matin et arrêt programmé le soir
- mise à jour à distance de la présentation
- programmation de bandeaux défilant translucides en surimpression (v2 seulement)

Des logiciels de gestion de borne multimédia existent dans le commerce mais ils nous ont semblé surdimensionnés par rapport à nos besoins.

La solution (maison) que nous avons décidé de mettre en place s'appuie sur :

- du matériel composé d'un mini-PC sous windows connecté au réseau local, un écran LCD 32 pouces, le tout sur un pied adapté
- PowerPoint comme unique outil de présentation (diaporama en boucle)
- une prise de contrôle à distance de la borne (vnc) pour d'éventuelles opérations de maintenance
- une carte graphique bi-écran. L'écran LCD de la borne est en écran de "droite". L'écran de "gauche" (virtuel) est réservé à la prise de contrôle à distance.
- un script vbscript pour lancer la présentation et scanner périodiquement (toutes les 5 secondes) un dossier de dépôt dans lequel on viendra placer à travers le réseau les mises à jour de cette présentation et un autre pour arrêter la présentation. Ces deux scripts sont lancés automatiquement par le planificateur de tâche Windows.

Lorsqu'un nouveau PowerPoint est trouvé dans le dossier de dépôt, le script interrompt le PowerPoint en cours, déplace le nouveau PowerPoint dans le dossier d'exécution et le lance. Si les deux dossiers sont sur le même volume, l'opération est quasi instantanée.

Le script est également lancé au démarrage du PC pour pouvoir, en cas de coupure de courant, relancer la présentation et le mécanisme de mise à jour.

En principe, la borne est ainsi totalement autonome (pas de clavier ni de souris). la prise de contrôle à distance a été mise en place uniquement pour régler d'éventuels dysfonctionnements.

J'utilise un PowerPoint complet plutôt que la visionneuse PowerPoint afin de pouvoir configurer la présentation sur l'écran de droite. On pourrait aussi utiliser la visionneuse PowerPoint et/ou faire l'impasse sur la prise de contrôle à distance mais dans ce cas, intervention nécessaire sur la borne avec branchement d'un clavier et d'une souris en cas de problème.

La version 1 est la version initialement postée sur Codes-Sources. Elle ne contient pas l'option "bandeaux défilants". Je l'ai conservée dans le zip car elle à le mérite d'être très simple (deux fichiers très courts) pour ceux que l'option n'intéresse pas.

La version 2 permet donc la gestion de bandeaux d'annonce défilants et translucides en surimpression du PowerPoint en cours (sur les conseils de gillardg). Cela utilise des fichiers HTML et un petit visualiseur, exécutable en C#.net dont j'ai joint les sources a toutes fins utiles. Le code VBS a nettement pris de l'embonpoint puisqu'il passe de 68 à 317 lignes.
Le bandeau est un petit fichier HTML. On personnalisera le message en éditant directement le fichier HTML. Les heures de début et de fin d'affichage du bandeau sont également codées dans le fichier HTML derrière des balises meta "Debut" et "Fin". Toutes ces opérations sont très simples, pas besoin de connaitre le HTML pour comprendre comment mettre à jour le bandeau (avec le jeu de fichiers joint) et l'avantage du HTML est que celui-ci est complètement personnalisable.
Une fois le fichier HTML prêt, il suffit, comme pour le Powerpoint, de le déposer dans le dossier de dépôt. Il est possible de programmer à l'avance plusieurs bandeaux, voire même avec chevauchements (dans ce cas, pour une meilleure lisibilité, il vaudra mieux en placer un en bas et l'autre en haut de l'écran...) !

EnvoyerBandeau est une "HTML Application" (HTA) permettant de programmer au travers d'un petit formulaire un nouveau bandeau (message, date et heure de début, date et heure de fin et modèle de bandeau). Elle évite de devoir modifier directement le fichier HTML du bandeau. Le fichier EnvoyerBandeau.hta doit être placé dans un dossier contenant également les modèles de bandeau. L'application remplacera dans le modèle choisi les textes clés %%Debut%%, %%Fin%% et %%Message%% par les valeurs saisies dans le formulaire et déposera le nouveau fichier dans le dossier de dépot (à paramétrer directement dans EnvoyerBandeau.hta : constante repDep).

Nota : pour ceux qui ne connaissent pas (comme moi avant de réaliser EnvoyerBandeau), une "HTML Application" permet de combiner dans un seul fichier de type HTML (extension .HTA) du script (VbScript ou JavaScript) et une interface (en HTML). Comme un fichier .VBS, il suffit de double-cliquer sur le fichier .HTA pour lancer l'application.

Source

  • '
  • ' Démarrage du powerpoint et maj par visite du dossier Depot toutes les 5 sec.
  • ' Gestion des bandeaux
  • '
  • Const repDep="C:\Borne\Depot" ' dossier de dépot
  • Const repExe="C:\Borne\Exec" ' dossier d'exécution
  • Const repArc="C:\Borne\Archives" ' dossier d'archivage des anciens ppt (indiquer une chaine vide si pas d'archivage)
  • Const pptExe="Borne.ppt" ' fichier powerpoint d'exécution
  • Const pptLcd="""C:\Program Files\Microsoft Office 2K3\OFFICE11\POWERPNT.EXE"" /s " ' ligne de commande powerpoint (sans nom de fichier)
  • 'Const pptLcd="""C:\Program Files\Microsoft Office\Office10\POWERPNT.EXE"" /s " ' ligne de commande powerpoint (sans nom de fichier)
  • Const banLcd="C:\Borne\Bandeau.exe " ' ligne de commande de l'afficheur de bandeau
  • Const delai=5000 ' nombre de millisecondes entre chaque itération
  • Dim fso ' objet Scripting.FileSystemObject
  • Dim shl ' objet WScript.Shell
  • Dim ppt ' objet powerpoint
  • Dim htmlNom ' nom des fichiers HTML en cours (tableau)
  • Dim htmlDateFic ' date des fichiers HTML en cours (tableau)
  • Dim htmlDebut ' horaire de début des fichiers HTML en cours (tableau)
  • Dim htmlFin ' horaire de fin des fichiers HTML en cours (tableau)
  • Dim html ' objets HTML en cours (tableau)
  • Dim htmlNb ' nombre de fichiers HTML en cours
  • '--------------------------------------------------------------------------------------------------
  • Dim nom,ext,rep,ficcol,fic,i
  • ' initialisations diverses
  • htmlNb=0
  • Set fso = CreateObject("Scripting.FileSystemObject")
  • Set shl = CreateObject("WScript.Shell")
  • set ppt=nothing
  • ' on considère que le dossier d'exécution doit contenir un Borne.ppt au démarrage
  • If Not fso.FileExists(repExe & "\" & pptExe) Then
  • msgbox "Fichier " & repExe & "\" & pptExe & " innexistant...",vbCritical,"Borne"
  • WScript.Quit
  • End If
  • ' construction des tableaux html* avec les fichiers présents dans le dossier Exec
  • Set rep = fso.GetFolder(repExe)
  • Set ficCol = rep.Files
  • For Each fic in ficCol
  • ext=ucase(fso.GetExtensionName(fic.name))
  • If ext="HTM" or ext="HTML" Then ' on ne s'intéresse qu'aux fichiers HTML
  • nom=fso.GetFileName(fic.name)
  • If fso.FileExists(repDep & "\" & nom) Then
  • ' le fichier est toujours présent dans Depot
  • Call TraiterHtml(nom)
  • Else
  • ' le fichier n'est plus dans Depot -> il a été "déprogrammé" depuis la dernière exécution
  • fic.Delete(True)
  • End If
  • End If
  • Next
  • ' Boucle principale jusqu'à ce que le powerpoint soit interrompu
  • do
  • call Depot
  • WScript.Sleep delai
  • loop while ppt.Status=0
  • ' avant de quitter, interruption des éventuels HTML qui tourneraient encore
  • For i=0 To htmlNb-1
  • If Not html(i) Is Nothing Then
  • ' shl.AppActivate htmlNom(i)
  • ' shl.SendKeys "%{F4}"
  • html(i).Terminate
  • End If
  • Next
  • '--------------------------------------------------------------------------------------------------
  • Sub Depot()
  • '
  • ' rapatriement d'un éventuel powerpoint présent dans le dossier Dépot
  • ' lancement du powerpoint si premier appel ou changement de powerpoint
  • ' traitement des fichiers HTML (bandeau)
  • '
  • dim maj,ind,log,ficbak,dte,n,s
  • ' parcours des fichiers powerpoint du dossier Depot
  • Set rep = fso.GetFolder(repDep)
  • Set ficCol = rep.Files
  • maj = false
  • For Each fic in ficCol
  • ext=ucase(fso.GetExtensionName(fic.name))
  • if ext="PPS" or ext="PPT" then ' on ne s'intéresse qu'aux ppt et pps
  • if maj then
  • ' un powerpoint a déjà été trouvé. Si on en trouve d'autres, on les supprime
  • ' (sinon, ils seraient utilisés 5 secondes plus tard)
  • fic.Delete(True)
  • else
  • ' un powerpoint est trouvé. Si le powerpoint courant est en train de tourner,
  • ' on commence par l'arrêter.
  • if not ppt is nothing then ppt.Terminate
  • ' destruction ou archivage du powerpoint courant
  • if repArc="" then
  • ' pas d'archivage -> destruction du fichier
  • fso.DeleteFile repExe & "\" & pptExe,true
  • else
  • ' archivage du fichier
  • ' récupération de la date du fichier courant
  • set ficbak = fso.GetFile(repExe & "\" & pptExe)
  • dte = ficbak.DateLastModified
  • ' construction d'une chaine de date type "yymmddhhmmss"
  • s = Right(Cstr(Year(dte)),2) & Right(Cstr(Month(dte)+100),2) & Right(Cstr(Day(dte)+100),2) & Right(Cstr(Hour(dte)+100),2) & Right(Cstr(Minute(dte)+100),2) & Right(Cstr(Second(dte)+100),2)
  • ' construction du nom de fichier d'archive (ajout date avant le point)
  • s = Replace(pptExe,".",s & ".")
  • ' test si le fichier n'aurait pas déjà été archivé
  • if fso.FileExists(repArc & "\" & s) then
  • ' le fichier existe déjà -> a priori c'est le même : pas besoin de le remettre -> destruction
  • ficbak.Delete(True)
  • else
  • ' le fichier n'existe pas déjà -> déplacement/renommage du fichier dans le dossier d'archive
  • ficbak.Move(repArc & "\" & s)
  • end if
  • end if
  • ' déplacement du powerpoint déposé dans le dossier d'exécution en le renommant Borne.ppt
  • fic.Move(repExe & "\" & pptExe)
  • ' lancement du nouveau powerpoint (asynchrone)
  • Set ppt = shl.Exec(pptLcd & """" & repExe & "\" & pptExe & """")
  • maj = True
  • end if
  • end if
  • Next
  • if ppt is nothing then
  • ' on est ici si premier appel à Depot() et pas ne nouveau powerpoint dans le dossier Depot
  • ' lancement du powerpoint (asynchrone)
  • Set ppt = shl.Exec(pptLcd & """" & repExe & "\" & pptExe & """")
  • end if
  • ' parcours des fichiers HTML du dossier Depot
  • For Each fic in ficCol
  • ext=ucase(fso.GetExtensionName(fic.name))
  • if ext="HTM" or ext="HTML" then ' on ne s'intéresse qu'aux fichiers HTML
  • nom=fso.GetFileName(fic.name)
  • ind=ArrayGetIndex(htmlNom,nom)
  • If IsNull(ind) Then
  • ' c'est un nouveau fichier
  • fic.Copy(repExe & "\" & nom)
  • Call TraiterHtml(nom)
  • Else
  • ' le fichier est déjà réferencé
  • If htmlDateFic(ind)<>fic.DateLastModified Then
  • ' le fichier a été modifié -> il faut le retraiter
  • If html(ind) Is Nothing Then
  • ' on ne peut le retraiter que s'il n'est pas encore en train de tourner
  • fic.Copy(repExe & "\" & nom)
  • Call TraiterHtml(nom)
  • End If
  • End If
  • End If
  • end if
  • Next
  • ' parcours des HTML en attente
  • ind=0
  • Do While ind<htmlNb
  • If html(ind) Is Nothing Then
  • ' le HTML n'est pas en train de tourner
  • If htmlFin(ind)<=Now Or Not fso.FileExists(repDep & "\" & htmlNom(ind)) Then
  • ' la programmation du fichier appartient au passé
  • ' OU
  • ' le fichier à été supprimé de Depot -> sa programation est annulée
  • ' on supprime le fichier dans les dossier Exec et Depot
  • fso.DeleteFile repExe & "\" & htmlNom(ind),True
  • If fso.FileExists(repDep & "\" & htmlNom(ind)) Then
  • fso.DeleteFile repDep & "\" & htmlNom(ind),True
  • End If
  • ' on supprime les entrées dans les tableaux
  • For i=ind to htmlNb-2
  • htmlNom(i)=htmlNom(i+1)
  • htmlDateFic(i)=htmlDateFic(i+1)
  • htmlDebut(i)=htmlDebut(i+1)
  • htmlFin(i)=htmlFin(i+1)
  • Set html(i)=html(i+1)
  • Next
  • htmlNb=htmlNb-1
  • If htmlNb=0 Then
  • htmlNom=Empty
  • htmlDateFic=Empty
  • htmlDebut=Empty
  • htmlFin=Empty
  • html=Empty
  • Else
  • Redim Preserve htmlNom(htmlNb-1)
  • Redim Preserve htmlDateFic(htmlNb-1)
  • Redim Preserve htmlDebut(htmlNb-1)
  • Redim Preserve htmlFin(htmlNb-1)
  • Redim Preserve html(htmlNb-1)
  • End If
  • ind=ind-1
  • ElseIf htmlDebut(ind)<=Now Then
  • ' il faut le lancer
  • Set html(ind) = shl.Exec(banLcd & """" & repExe & "\" & htmlNom(ind) & """")
  • End If
  • Else
  • ' le html est en train de tourner
  • If htmlFin(ind)<=Now Then
  • ' il faut l'arrêter
  • ' shl.AppActivate htmlNom(ind)
  • ' shl.SendKeys "%{F4}"
  • html(ind).Terminate
  • set html(ind)=Nothing
  • End If
  • End If
  • ind=ind+1
  • Loop
  • ' ecriture du log
  • set log=fso.CreateTextFile(repDep & "\" & "log.txt",true)
  • set fic=fso.GetFile(repExe & "\" & pptExe)
  • log.WriteLine pptExe & " - " & fic.DateLastModified
  • n=0
  • for i=0 to htmlNb-1
  • n=Max(Len(htmlNom(i)),n)
  • next
  • for i=0 to htmlNb-1
  • s=htmlNom(i) & Space(n-Len(htmlNom(i))) & " "
  • s=s & htmlDebut(i) & " "
  • s=s & htmlFin(i) & " "
  • If html(i) Is Nothing Then
  • s=s & "En attente"
  • Else
  • s=s & "Actif"
  • End If
  • log.WriteLine s
  • next
  • log.close
  • ' on donne le focus au powerpoint
  • ' (utile si le script est lancé par le planificateur de tâches)
  • ' shl.AppActivate "Diaporama PowerPoint"
  • shl.AppActivate ppt.ProcessID
  • End Sub
  • '--------------------------------------------------------------------------------------------------
  • Sub TraiterHtml(nom)
  • '
  • ' Ajout d'un fichier HTML dans les tableaux html*
  • ' lecture de la programmation dans les Métadonnées
  • '
  • Dim fic,ts,debut,fin,s
  • Set fic=fso.GetFile(repExe & "\" & nom)
  • ' lecture du fichier (métadonnées)
  • Set ts=fic.OpenAsTextStream(1) ' 1 = ouverture en lecture
  • Do Until ts.AtEndOfStream
  • s = Trim(Lcase(ts.ReadLine))
  • If Left(s,28)="<meta name=""debut"" content=""" Then
  • debut=CDate(Mid(s,29,Len(s)-30))
  • ElseIf Left(s,26)="<meta name=""fin"" content=""" Then
  • fin=CDate(Mid(s,27,Len(s)-28))
  • End If
  • If Not(Isempty(debut) Or Isempty(fin)) Then Exit Do
  • Loop
  • ts.Close
  • ' si début et/ou fin n'ont pas pu être lus, on met Now aux deux
  • ' comme ça le fichier sera supprimé dès la prochaine itération
  • If Isempty(debut) Or Isempty(fin) Then
  • debut=Now
  • fin=Now
  • End If
  • ' Mise à jour des tableaux
  • i=ArrayGetIndex(htmlNom,nom)
  • If IsNull(i) Then
  • i=htmlNb
  • If i=0 Then
  • Redim htmlNom(i)
  • Redim htmlDateFic(i)
  • Redim htmlDebut(i)
  • Redim htmlFin(i)
  • Redim html(i)
  • Else
  • Redim Preserve htmlNom(i)
  • Redim Preserve htmlDateFic(i)
  • Redim Preserve htmlDebut(i)
  • Redim Preserve htmlFin(i)
  • Redim Preserve html(i)
  • End If
  • htmlNb=i+1
  • End If
  • htmlNom(i)=nom
  • htmlDateFic(i)=fic.DateLastModified
  • htmlDebut(i)=debut
  • htmlFin(i)=fin
  • Set html(i)=Nothing
  • End Sub
  • '--------------------------------------------------------------------------------------------------
  • function ArrayGetIndex(sourceArray,searchValue)
  • Dim i
  • If Not IsArray(sourceArray) Then
  • ArrayGetIndex=Null
  • Else
  • For i=0 To Ubound(sourceArray)
  • If searchValue=sourceArray(i) Then Exit For
  • Next
  • If i>Ubound(sourceArray) Then
  • ArrayGetIndex=Null
  • Else
  • ArrayGetIndex=i
  • End If
  • End If
  • End Function
  • '--------------------------------------------------------------------------------------------------
  • Sub ArrayAppend(sourceArray,appendValue)
  • If IsEmpty(sourceArray) Then
  • Redim sourceArray(0)
  • Else
  • Redim Preserve sourceArray(Ubound(sourceArray)+1)
  • End If
  • sourceArray(Ubound(sourceArray))=appendValue
  • End Sub
  • '--------------------------------------------------------------------------------------------------
  • Function Max(a,b)
  • If b>a Then
  • Max=b
  • Else
  • Max=a
  • End If
  • End Function
'
' Démarrage du powerpoint et maj par visite du dossier Depot toutes les 5 sec.
' Gestion des bandeaux
'
Const repDep="C:\Borne\Depot"    ' dossier de dépot
Const repExe="C:\Borne\Exec"     ' dossier d'exécution
Const repArc="C:\Borne\Archives" ' dossier d'archivage des anciens ppt (indiquer une chaine vide si pas d'archivage)
Const pptExe="Borne.ppt"      ' fichier powerpoint d'exécution
Const pptLcd="""C:\Program Files\Microsoft Office 2K3\OFFICE11\POWERPNT.EXE"" /s " ' ligne de commande powerpoint (sans nom de fichier)
'Const pptLcd="""C:\Program Files\Microsoft Office\Office10\POWERPNT.EXE"" /s "    ' ligne de commande powerpoint (sans nom de fichier)
Const banLcd="C:\Borne\Bandeau.exe " ' ligne de commande de l'afficheur de bandeau
Const delai=5000              ' nombre de millisecondes entre chaque itération

Dim fso ' objet Scripting.FileSystemObject
Dim shl ' objet WScript.Shell
Dim ppt ' objet powerpoint
Dim htmlNom     ' nom des fichiers HTML en cours (tableau)
Dim htmlDateFic ' date des fichiers HTML en cours (tableau)
Dim htmlDebut   ' horaire de début des fichiers HTML en cours (tableau)
Dim htmlFin     ' horaire de fin des fichiers HTML en cours (tableau)
Dim html        ' objets HTML en cours (tableau)
Dim htmlNb      ' nombre de fichiers HTML en cours
'--------------------------------------------------------------------------------------------------
Dim nom,ext,rep,ficcol,fic,i

' initialisations diverses
htmlNb=0
Set fso = CreateObject("Scripting.FileSystemObject")
Set shl = CreateObject("WScript.Shell")
set ppt=nothing

' on considère que le dossier d'exécution doit contenir un Borne.ppt au démarrage
If Not fso.FileExists(repExe & "\" & pptExe) Then
	msgbox "Fichier " & repExe & "\" & pptExe & " innexistant...",vbCritical,"Borne"
	WScript.Quit
End If

' construction des tableaux html* avec les fichiers présents dans le dossier Exec
Set rep = fso.GetFolder(repExe)
Set ficCol = rep.Files
For Each fic in ficCol
	ext=ucase(fso.GetExtensionName(fic.name))
	If ext="HTM" or ext="HTML" Then ' on ne s'intéresse qu'aux fichiers HTML
		nom=fso.GetFileName(fic.name)
		If fso.FileExists(repDep & "\" & nom) Then
			' le fichier est toujours présent dans Depot
			Call TraiterHtml(nom)
		Else
			' le fichier n'est plus dans Depot -> il a été "déprogrammé" depuis la dernière exécution
			fic.Delete(True)
		End If
	End If
Next

' Boucle principale jusqu'à ce que le powerpoint soit interrompu
do

	call Depot
	WScript.Sleep delai

loop while ppt.Status=0

' avant de quitter, interruption des éventuels HTML qui tourneraient encore
For i=0 To htmlNb-1
	If Not html(i) Is Nothing Then
'		shl.AppActivate htmlNom(i)
'		shl.SendKeys "%{F4}"
		html(i).Terminate
	End If
Next


'--------------------------------------------------------------------------------------------------
Sub Depot()
	'
	' rapatriement d'un éventuel powerpoint présent dans le dossier Dépot
	' lancement du powerpoint si premier appel ou changement de powerpoint
	' traitement des fichiers HTML (bandeau)
	'
	dim maj,ind,log,ficbak,dte,n,s

	' parcours des fichiers powerpoint du dossier Depot
	Set rep = fso.GetFolder(repDep)
	Set ficCol = rep.Files
	maj = false
	For Each fic in ficCol
		ext=ucase(fso.GetExtensionName(fic.name))
		if ext="PPS" or ext="PPT" then ' on ne s'intéresse qu'aux ppt et pps
			if maj then
				' un powerpoint a déjà été trouvé. Si on en trouve d'autres, on les supprime
				' (sinon, ils seraient utilisés 5 secondes plus tard)
				fic.Delete(True)
			else
				' un powerpoint est trouvé. Si le powerpoint courant est en train de tourner,
				' on commence par l'arrêter.
				if not ppt is nothing then ppt.Terminate
				' destruction ou archivage du powerpoint courant
				if repArc="" then
					' pas d'archivage -> destruction du fichier
					fso.DeleteFile repExe & "\" & pptExe,true
				else
					' archivage du fichier
					' récupération de la date du fichier courant
					set ficbak = fso.GetFile(repExe & "\" & pptExe)
					dte = ficbak.DateLastModified
					' construction d'une chaine de date type "yymmddhhmmss"
					s = Right(Cstr(Year(dte)),2) & Right(Cstr(Month(dte)+100),2) & Right(Cstr(Day(dte)+100),2) & Right(Cstr(Hour(dte)+100),2) & Right(Cstr(Minute(dte)+100),2) & Right(Cstr(Second(dte)+100),2)
					' construction du nom de fichier d'archive (ajout date avant le point)
					s = Replace(pptExe,".",s & ".")
					' test si le fichier n'aurait pas déjà été archivé
					if fso.FileExists(repArc & "\" & s) then
						' le fichier existe déjà -> a priori c'est le même : pas besoin de le remettre -> destruction
						ficbak.Delete(True)
					else
						' le fichier n'existe pas déjà -> déplacement/renommage du fichier dans le dossier d'archive
						ficbak.Move(repArc & "\" & s)
					end if
				end if
				' déplacement du powerpoint déposé dans le dossier d'exécution en le renommant Borne.ppt
				fic.Move(repExe & "\" & pptExe)
				' lancement du nouveau powerpoint (asynchrone)
				Set ppt = shl.Exec(pptLcd & """" & repExe & "\" & pptExe & """")
				maj = True
			end if
		end if
	Next
	if ppt is nothing then
		' on est ici si premier appel à Depot() et pas ne nouveau powerpoint dans le dossier Depot
		' lancement du powerpoint (asynchrone)
		Set ppt = shl.Exec(pptLcd & """" & repExe & "\" & pptExe & """")
	end if
	' parcours des fichiers HTML du dossier Depot
	For Each fic in ficCol
		ext=ucase(fso.GetExtensionName(fic.name))
		if ext="HTM" or ext="HTML" then ' on ne s'intéresse qu'aux fichiers HTML
			nom=fso.GetFileName(fic.name)
			ind=ArrayGetIndex(htmlNom,nom)
			If IsNull(ind) Then
				' c'est un nouveau fichier
				fic.Copy(repExe & "\" & nom)
				Call TraiterHtml(nom)
			Else
				' le fichier est déjà réferencé
				If htmlDateFic(ind)<>fic.DateLastModified Then
					' le fichier a été modifié -> il faut le retraiter
					If html(ind) Is Nothing Then
						' on ne peut le retraiter que s'il n'est pas encore en train de tourner
						fic.Copy(repExe & "\" & nom)
						Call TraiterHtml(nom)
					End If
				End If
			End If
		end if
	Next
	' parcours des HTML en attente
	ind=0
	Do While ind<htmlNb
		If html(ind) Is Nothing Then
			' le HTML n'est pas en train de tourner
			If htmlFin(ind)<=Now Or Not fso.FileExists(repDep & "\" & htmlNom(ind)) Then
				' la programmation du fichier appartient au passé
				'    OU
				' le fichier à été supprimé de Depot -> sa programation est annulée
				' on supprime le fichier dans les dossier Exec et Depot
				fso.DeleteFile repExe & "\" & htmlNom(ind),True
				If fso.FileExists(repDep & "\" & htmlNom(ind)) Then
					fso.DeleteFile repDep & "\" & htmlNom(ind),True
				End If
				' on supprime les entrées dans les tableaux
				For i=ind to htmlNb-2
					htmlNom(i)=htmlNom(i+1)
					htmlDateFic(i)=htmlDateFic(i+1)
					htmlDebut(i)=htmlDebut(i+1)
					htmlFin(i)=htmlFin(i+1)
					Set html(i)=html(i+1)
				Next
				htmlNb=htmlNb-1
				If htmlNb=0 Then
					htmlNom=Empty
					htmlDateFic=Empty
					htmlDebut=Empty
					htmlFin=Empty
					html=Empty
				Else
					Redim Preserve htmlNom(htmlNb-1)
					Redim Preserve htmlDateFic(htmlNb-1)
					Redim Preserve htmlDebut(htmlNb-1)
					Redim Preserve htmlFin(htmlNb-1)
					Redim Preserve html(htmlNb-1)
				End If
				ind=ind-1
			ElseIf htmlDebut(ind)<=Now Then
				' il faut le lancer
				Set html(ind) = shl.Exec(banLcd & """" & repExe & "\" & htmlNom(ind) & """")
			End If
		Else
			' le html est en train de tourner
			If htmlFin(ind)<=Now Then
				' il faut l'arrêter
'				shl.AppActivate htmlNom(ind)
'				shl.SendKeys "%{F4}"
				html(ind).Terminate
				set html(ind)=Nothing
			End If
		End If
		ind=ind+1
	Loop
	
	' ecriture du log
	set log=fso.CreateTextFile(repDep & "\" & "log.txt",true)
	set fic=fso.GetFile(repExe & "\" & pptExe)
	log.WriteLine pptExe & " - " & fic.DateLastModified
	n=0
	for i=0 to htmlNb-1
		n=Max(Len(htmlNom(i)),n)
	next
	for i=0 to htmlNb-1
		s=htmlNom(i) & Space(n-Len(htmlNom(i))) & " "
		s=s & htmlDebut(i) & " "
		s=s & htmlFin(i) & " "
		If html(i) Is Nothing Then
			s=s & "En attente"
		Else
			s=s & "Actif"
		End If
		log.WriteLine s
	next
	log.close

	
	' on donne le focus au powerpoint
	' (utile si le script est lancé par le planificateur de tâches)
'	shl.AppActivate "Diaporama PowerPoint"
	shl.AppActivate ppt.ProcessID
End Sub
'--------------------------------------------------------------------------------------------------
Sub TraiterHtml(nom)
	'
	' Ajout d'un fichier HTML dans les tableaux html*
	' lecture de la programmation dans les Métadonnées
	'
	Dim fic,ts,debut,fin,s

	Set fic=fso.GetFile(repExe & "\" & nom)

	' lecture du fichier (métadonnées)
	Set ts=fic.OpenAsTextStream(1) ' 1 = ouverture en lecture
	Do Until ts.AtEndOfStream
		s = Trim(Lcase(ts.ReadLine))
		If Left(s,28)="<meta name=""debut"" content=""" Then
			debut=CDate(Mid(s,29,Len(s)-30))
		ElseIf Left(s,26)="<meta name=""fin"" content=""" Then
			fin=CDate(Mid(s,27,Len(s)-28))
		End If
		If Not(Isempty(debut) Or Isempty(fin)) Then Exit Do
	Loop
	ts.Close
	
	' si début et/ou fin n'ont pas pu être lus, on met Now aux deux
	' comme ça le fichier sera supprimé dès la prochaine itération
	If Isempty(debut) Or Isempty(fin) Then
		debut=Now
		fin=Now
	End If

	' Mise à jour des tableaux
	i=ArrayGetIndex(htmlNom,nom)
	If IsNull(i) Then
		i=htmlNb
		If i=0 Then
			Redim htmlNom(i)
			Redim htmlDateFic(i)
			Redim htmlDebut(i)
			Redim htmlFin(i)
			Redim html(i)
		Else
			Redim Preserve htmlNom(i)
			Redim Preserve htmlDateFic(i)
			Redim Preserve htmlDebut(i)
			Redim Preserve htmlFin(i)
			Redim Preserve html(i)
		End If
		htmlNb=i+1
	End If
	htmlNom(i)=nom
	htmlDateFic(i)=fic.DateLastModified
	htmlDebut(i)=debut
	htmlFin(i)=fin
	Set html(i)=Nothing
End Sub
'--------------------------------------------------------------------------------------------------
function ArrayGetIndex(sourceArray,searchValue)
	Dim i
	If Not IsArray(sourceArray) Then
		ArrayGetIndex=Null
	Else
		For i=0 To Ubound(sourceArray)
			If searchValue=sourceArray(i) Then Exit For
		Next
		If i>Ubound(sourceArray) Then
			ArrayGetIndex=Null
		Else
			ArrayGetIndex=i
		End If
	End If
End Function
'--------------------------------------------------------------------------------------------------
Sub ArrayAppend(sourceArray,appendValue)
	If IsEmpty(sourceArray) Then
		Redim sourceArray(0)
	Else
		Redim Preserve sourceArray(Ubound(sourceArray)+1)
	End If
	sourceArray(Ubound(sourceArray))=appendValue
End Sub
'--------------------------------------------------------------------------------------------------
Function Max(a,b)
	If b>a Then
		Max=b
	Else
		Max=a
	End If
End Function

 Conclusion

Ce montage très simple est à mon avis un gage de robustesse (nécessaire pour ce type d'application) par rapport à un système dédié plus "usine à gaz". La présentation peut néanmoins être sophistiquée car un PowerPoint peut inclure des tas de choses (images, vidéos, animations flash...)

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

19 janvier 2009 10:38:04 :
Pour info : j'ai finalement développé le bandeau défilant
09 février 2009 16:27:54 :
Je propose une mise à jour importante permettant la gestion de bandeaux d'annonce défilants et translucides en surimpression du PowerPoint en cours (sur les conseils de gillardg). Cela utilise des fichiers HTML et un petit visualiseur, exécutable en C#.net dont j'ai joint les sources a toutes fins utiles. Le code VBS a nettement pris de l'embonpoint puisqu'il passe de 68 à 317 lignes. J'ai placé cette nouvelle version dans le dossier Borne.v2 et j'ai laissé la première version dans Borne.v1 pour ceux qui n'utilisent pas les bandeaux. Le bandeau est un petit fichier HTML. On personnalisera le message en éditant directement le fichier HTML. Les heures de début et de fin d'affichage du bandeau sont également codées dans le fichier HTML derrière des balises meta "Debut" et "Fin". Toutes ces opérations sont très simples, pas besoin de connaitre le HTML pour comprendre comment mettre à jour le bandeau (avec le jeu de fichiers joint) et l'avantage du HTML est que celui-ci est complètement personnalisable. Une fois le fichier HTML prêt, il suffit, comme pour le Powerpoint, de le déposer dans le dossier de dépôt. Il est possible de programmer à l'avance plusieurs bandeaux, voire même avec chevauchements (dans ce cas, pour une meilleure lisibilité, il vaudra mieux en placer un en bas et l'autre en haut de l'écran...) !
09 février 2009 16:37:55 :
Mise en ligne de la version 2 : gestion des bandeaux défilants.
09 février 2009 16:51:02 :
Mise en ligne de la version 2 : gestion des bandeaux défilants.
09 février 2009 16:59:48 :
J'ai intégré l'option d'archivage de Kopilotk dans la v2
11 février 2010 10:53:22 :
Modification mineure concernant l'archivage des présentations : pas d'archivage si la même présentation avait déjà été diffusée et donc archivée une première fois
11 février 2010 11:01:10 :
Modification mineure concernant l'archivage des présentations : pas d'archivage si la même présentation avait déjà été diffusée et donc archivée une première fois
19 novembre 2010 16:14:09 :
Ajout de EnvoyerBandeau : "HTML Application" (HTA) permettant de programmer au travers d'un petit formulaire un nouveau bandeau (message, date et heure de début, date et heure de fin et modèle de bandeau)

 Sources de la même categorie

Source avec Zip Source avec une capture RECHERCHE & SAUVEGARDE DES FICHIERS PAR LEURS EXTENSIONS par hackoo
Source avec Zip Source avec une capture [VBS] SPLASH SCREEN EN VBSCRIPT par hackoo
Source avec Zip Source avec une capture [VBS] GOOGLE EASTER EGGS par hackoo
Source avec Zip Source avec une capture FILE2COMPARE: COMPARAISON DE DEUX FICHIERS LIGNE PAR LIGNE par hackoo
Source avec Zip Source avec une capture [VBS] COMMENT CRÉER UN DOSSIER ET LE PROTÉGER PAR MOT DE PAS... par hackoo

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) EXPORTER LES IMAGES DE WORD ET D' EXCEL par Le Pivert
Source avec Zip Source avec une capture FILE2COMPARE: COMPARAISON DE DEUX FICHIERS LIGNE PAR LIGNE par hackoo
Source avec Zip Source avec une capture LECTEUR MULTIMÉDIA par lartiguef
Source avec Zip [VBA POWERPOINT] PAGINATION AVEC TOTAL DE DIAPO par Philippe734
Source avec Zip [VBA POWERPOINT] CRÉER UN SOMMAIRE AUTOMATIQUE par Philippe734

Commentaires et avis

Commentaire de oommeeggaa3d le 30/10/2008 09:12:08

Je ne saurais trop te conseiller de mettre une capture d'écran ...

Commentaire de piergel le 30/10/2008 09:51:21

Il n'y a rien de visuel ! c'est du code qui tourne en arrière plan, qui scrute un dossier, manipule des fichiers, arrête ou lance PowerPoint... Je ne vois pas trop ce que je pourrais mettre comme capture à part mon éditeur de code !  :)

Commentaire de neo2k2 le 30/10/2008 10:08:39 9/10

Ben OOMMEEGGAA3D...

Set ppt = shl.Exec(lcd & """" & exe & """")
shl.AppActivate "Diaporama PowerPoint"

C'est pour lancer Powerpoint, à quoi servirait une capture? Tu connais sûrement déjà Powerpoint; c'est du VBS, pas du VB6... ;o)

Sinon au niveau de la source, je conseillerais d'éviter les accents et les espaces dans les noms de fichiers. Préférer des underscore pour séparer les mots: _ ;o)

Le code est très propre et bien commenté!

Je serais tenté d'ajouter des variables d'environnement pour faire plus portable car on ne sait pas sur quel disque est installé Office:

Set WshShell = CreateObject("WScript.Shell")
ProgramFolder = WshShell.ExpandEnvironmentStrings("%ProgramFiles%") '
Wscript.echo ProgramFolder

Le seul hic que je constate est que tu installes Office au complet sur une borne multimedia. Pour plus de sécurité, confort et aisance, je te recommande d'installer la visionneuse Powerpoint...
Const lcd="""C:\Program Files\Microsoft Office 2K3\OFFICE11\POWERPNT.EXE"" /s "
... devient (en tenant compte de ma précédente remarque)...
Const lcd= ProgramFolder & """\Microsoft Office\OFFICE12\POWERVIEW.EXE"" /s "
...et le tour est joué!

Allez, je te donne 9 car je suis en forme ce matin!

Commentaire de piergel le 30/10/2008 10:29:35

Merci pour le commentaire (et la note) Neo2k2. C'est vrai que j'aurais pu être plus fin dans la localisation de l'exécutable PowerPoint mais je n'ai pas cherché à fignoler. Quatre constantes à définir au début du vbs ne m'ont pas semblé trop contraignant et une fois que la borne est installée, on y touche plus !

J'ai expliqué en fin de description pourquoi j'utilisais PowerPoint et pas la visionneuse... En ajoutant que l'emploi de cette dernière était bien sur possible. Peux-tu expliquer "pour plus de sécurité, confort et aisance", particulièrement "sécurité" ? Je ne vois pas en quoi l'utilisation de PowerPoint plutôt que la visionneuse serait préjudiciable à la sécurité. La borne n'a ni clavier ni souris et l'écran n'est pas tactile. La sécurité d'accès à distance est assurée par mots de passe (Windows et vnc).

Commentaire de gillardg le 30/10/2008 14:29:54

pour ton idée d'une petite appli pour faire défiler du texte dans une fenètre transparente :
une appli vb.net un form backcolor white , transparencykey white topmost=true formborderstyle=none
avec un webbrowser et dans l'evenement load de ta form tu fais webbrowser.naviguate("path" & "fichier")
dont voici le contenu

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>Untitled Page</title>
</head>
<body style="background-color: transparent">
<marquee behavior=alternate direction=left> <a > Ton texte à scroller ici</a></marquee>
</body>
</html>

Commentaire de piergel le 31/10/2008 08:57:14

Merci beaucoup GillardG ! J'ai testé ça marche nickel. Me reste plus qu'à peaufiner (fond en couleur translucide pour le bandeau avec Opacity à 80% sur la form)...
Et le principe d'une page HTML me convient parfaitement, ça rend le truc personnalisable facilement : la mécanique est dans la petite appli, le look dans le fichier HTML.

Commentaire de BadoqueAlex le 02/11/2008 17:54:07 5/10

Moais ... Il à pas inventé l'eau chaude quand même ... 5/10

Commentaire de piergel le 03/11/2008 10:18:36

Mais je n'ai jamais prétendu avoir inventé l'eau chaude avec cette source ! :)
J'ai bien pris soin de la mettre en "Débutant".
C'est sur que le code n'a rien de transcendant mais j'ai pensé que l'idée pouvait intéresser quelques personnes...
Si ça peut te rassurer, il m'arrive de travailler sur des projets plus complexes sinon mon patron m'aurait viré depuis longtemps ! lol

Commentaire de BadoqueAlex le 03/11/2008 17:46:17

Ce n'était pas méchant quand je disais cela mais ce qui me gêne, c'est la notation laxiste des gens.. 9/10, faut pas pousser ... Enfin ta source est bonne, pas excellente. c'est le principal ^^

Commentaire de BadoqueAlex le 03/11/2008 17:48:36

PS: Le 5/10 n'est pas la valeur du code mais juste ce qu'il faut pour que le code ai une moyenne qui reflète sa qualité ^^ (Je prétend pas faire du code parfait hein, mais bon, Nobody is perfect ^^)

Commentaire de piergel le 03/11/2008 18:10:25

Je trouve aussi que 9, c'était beaucoup d'honneur pour ce petit bout de code ;)
Cependant, je ne trouve pas ça honnête de "calculer" une note pour que la moyenne corresponde à la note que toi tu considères juste. Ça veut dire que tu ne respectes pas les notes des autres. Si tu penses que ça vaut 7, il faut mettre 7...
C'était juste une petite remarque en passant car sur le reste on est d'accord.
Sans rancune ! ^^

Commentaire de BadoqueAlex le 03/11/2008 18:17:19

D'accord avec toi Piergel mais sinon, on se retrouve avec des morceaux de code dans les meilleurs notes quand on fait un tri dans la recherche et les meilleurs notes ne correspondent plus à rien ...

Commentaire de eli42 le 19/01/2009 01:04:00 8/10

Bonjour, moi meme je diffuse du ppt sur des ecrans, pour linstant je reconverti mes PPT en vidéo WMV avec PPT2DVD, et je les lance via une playlist, donc je vais me pencher sur ce code qui d'apres moi est tres bon, juste un truc peut on, simuler le clic pour faire défiler les diapos. Encore chapeau bonne continuation.

Commentaire de piergel le 19/01/2009 10:33:03

Bonjour, merci pour ton appréciation !
Il n'y a pas besoin de "simuler le clic" pour faire défiler les diapos d'un Powerpoint, l'enchainement des diapos est entièrement paramétrable dans Powerpoint : clic, temporisation ou les deux (menu Diaporama/Transitions...).

Commentaire de eli42 le 19/01/2009 13:31:59

Re, dsl j'ai fait de la rétention dans mon commentaire, oui certe on peu parametrer, mais pour eviter de me retapper 173 PPT, tu me diras je pourrais justifier mon travail par les temps qui courent.
Je maintiens ma note 8/10 elle est basé sur 6 pour le code et 2 pour l'idée. Tu rajoutes une playlist le clic auto, et tu as le prix Nobel 2009.

Cordialement.

Commentaire de piergel le 19/01/2009 13:55:28

La playlist est une bonne idée. C'est d'ailleurs une option proposée par les solutions commerciales de borne. Mais personnellement je n'en ai pas l'utilité car je n'aurai toujours qu'un seul Powerpoint. Même chose pour le clic auto. Je te laisse donc t'occuper de ces deux points et ainsi nous partagerons le prix Nobel ! ;)
Une petite suggestion : Il ne doit pas être très difficile de faire une petite macro VBA qui parcourt tes 173 PPT et remplace les transitions manuelles en transitions automatiques temporisées...
PS : j'ai finalisé l'option "bandeau défilant translucide programmable" (voir plus haut) mais pas eu le temps de mettre à jour ma source...

Commentaire de Kopilotk le 05/02/2009 10:20:52

Bonjour,

Merci pour ce script qui fonctionne très bien.

Il me faudrait par contre une modification que je suis incapable de faire, il faudrait que la nouvelle présentation soit copiée à 2 endroits bien distinct, pour faire un backup en faite.
Quelqu'un peut il m'aider ?

Merci.

Commentaire de piergel le 05/02/2009 19:05:47

Je te propose un mécanisme qui déplace et renomme le powerpoint courant en cas de mise à jour (au lieu de le supprimer) :

Ligne à ajouter au début dans les déclarations :
Const arc="C:\Borne\Archives" ' dossier d'archivage des anciens ppt

Lignes à ajouter en remplacement de la ligne fso.DeleteFile exe,true :
' archivage du fichier courant :
' récupération de la date du fichier courant
set ficbak = fso.GetFile(exe)
dte = ficbak.DateLastModified
' construction d'une chaine de date type "yymmddhhmmss"
txt = Right(Cstr(Year(dte)),2) & Right(Cstr(Month(dte)+100),2) & Right(Cstr(Day(dte)+100),2) & Right(Cstr(Hour(dte)+100),2) & Right(Cstr(Minute(dte)+100),2) & Right(Cstr(Second(dte)+100),2)
' déplacement/renommage du fichier dans le dossier d'archive
ficbak.Move(arc & "\Borne" & txt & ".ppt")

Pour faire propre, ajouter les déclarations de ficbak, dte et txt.

Je n'ai pas testé mais ça devrait fonctionner...

Commentaire de Kopilotk le 05/02/2009 21:35:51

Merci Piergel !!

J'essaie dès demain matin et je donnerais un retour de la modif.

Kop.

Commentaire de Kopilotk le 06/02/2009 09:08:51

Bonjour,

Piergel ... ça marche nickel du tonnerre !!!

Merci pour cette modif Ô combien importante.

Bonne journée.

Kop.

Commentaire de titox le 07/02/2009 20:20:29

Bonjour,
je serais intéresser par la manière que tu as utilisé pour faire le bandeau qui défile, et pourquoi pas ta source ;)

Merci

Commentaire de cryenne le 29/05/2009 10:51:04

salut
super ce ptit programme,
deja j y connais rien

mais serait il possible de lui faire executer plusieurs fichier ppt qui serait dans le depot (si nouveau) puis dans le rep exec et en boucle
en fait j ai different service qui font des ppt les depose puis diffusion

merci

Commentaire de piergel le 29/05/2009 11:32:38

Bonjour

Le principe est qu'un ppt déposé remplace le précédent. Si on doit en exécuter plusieurs, comment sait-on si un ppt s'ajoute ou en remplace un autre (et lequel) ?
On pourrait résoudre ce point en gérant plusieurs dossiers Dépôt et Exec.
Se pose un autre problème à creuser : comment enchainer proprement plusieurs ppt en visu ?

Je donne juste ces pistes de réflexion car je n'ai pas du tout le temps de me pencher sur le problème en ce moment, désolé. Mais si quelqu'un d'autre veut s'y coller, je n'y vois aucun inconvénient !

Commentaire de cryenne le 29/05/2009 13:11:07

salut

avec une playlist,
le probleme c est de lui dire de boucler a la fin de la playlist
j arrive a faire une playlist avec pwp mais le probleme c est de boucler

deja merci de la reponse

Commentaire de Oxidus le 22/07/2009 17:24:34

Merci beaucoup, j'ai commencé à l'utiliser et c'est géniale, j'ai juste un petit souci, quand la présentation tourne et que je copie un gros fichier dans le répertoire "Depot", si il check le rep à ce même moment, le script se coupe avec un message permission reffusé (logique).
Ne serait'il pas possible de mettre un resume quelque part pour résoudre le problème ?

Autre petite question, ou doit-on mettre le dossier bandeau ?

Commentaire de cryenne le 29/09/2009 22:08:14

bonjour

je souhaiterai avoir des renseignements sur l install du bandeau. je mets le fichier bandeau.html dans depot avec l heure du debut et fin . mais une erreur apparait en me parlant de la ligne 188
dois je mettre le repertoire bandeau sur la racine aussi

merci

Commentaire de piergel le 30/09/2009 09:35:18

As-tu bien l'exécutable du bandeau dans le dossier spécifié par la variable banLcd (par défaut C:\Borne\Bandeau.exe) ? j'avais mis cet exécutable dans mon zip mais les admin ont été impitoyable : pas d'exécutable, que des sources ! Si c'est ça, il te faut le recompiler (sources dans le dossier Bandeau du zip). Je peux aussi t'envoyer cet exécutable par mail : envoie moi ton email par message privé)

Commentaire de cryenne le 30/09/2009 12:03:32

c est fait

Commentaire de cryenne le 06/10/2009 10:07:46 8/10

merci cela fonctionne
avec le bandeau, j ai associé un diffuseur de news (www.news-scroller.com
)
cela me permet de mettre les news a la suite que je veux.
biensur j ai redimensionner le tout pour qu il rentre dans mon bandeau html


Commentaire de piergel le 06/10/2009 12:18:21

Intéressant. Faudra que je regarde ça de plus près...

Commentaire de ctian le 21/10/2009 13:37:02

Set ppt = shl.Exec(pptLcd & """" & repExe & "\" & pptExe & """")

MESSAGE D'ERREUR

script: C:\Borne\Démarrer borne.vbs
ligne: 124
Caract.:3
Erreur: Objet requis: 'Borne'
Code: 800A01A8
Source Erreur d'exécution Microsoft VBScript

Comment faire
Merci

Commentaire de piergel le 21/10/2009 13:48:39

L'exécutable pointé par la constante pptLcd (Powerpoint ou visionneuse) est-il bien présent sur ton PC ?...

Commentaire de ctian le 21/10/2009 15:28:57

oui, j'ai bien powerpoint 2007 dans: C:\Program Files\Microsoft Office\Office12\POWERPNT.EXE

Commentaire de piergel le 21/10/2009 15:40:51

Et donc tu as bien remplacé en ligne 9

   Const pptLcd="""C:\Program Files\Microsoft Office 2K3\OFFICE11\POWERPNT.EXE"" /s "

par

   Const pptLcd="""C:\Program Files\Microsoft Office\OFFICE12\POWERPNT.EXE"" /s "

?.....

Commentaire de ctian le 21/10/2009 15:48:38

oui j'ai bien fait ça:
'
' Démarrage du powerpoint et maj par visite du dossier Depot toutes les 5 sec.
' Gestion des bandeaux
'
Const repDep="C:\Borne\Depot"    ' dossier de dépot
Const repExe="C:\Borne\Exec"     ' dossier d'exécution
Const repArc="C:\Borne\Archives" ' dossier d'archivage des anciens ppt (indiquer une chaine vide si pas d'archivage)
Const pptExe="Borne.ppt"      ' fichier powerpoint d'exécution
Const pptLcd="""C:\Program Files\Microsoft Office\office12\POWERPNT.EXE"" /s " ' ligne de commande powerpoint (sans nom de fichier)
'Const pptLcd="""C:\Program Files\Microsoft Office\Office12\POWERPNT.EXE"" /s "    ' ligne de commande powerpoint (sans nom de fichier)
Const banLcd="C:\Borne\Bandeau.exe " ' ligne de commande de l'afficheur de bandeau
Const delai=5000              ' nombre de millisecondes entre chaque itération


cordialement

Commentaire de piergel le 21/10/2009 16:00:55

Là j'ai pas trop d'idée, j'ai pas testé avec Powerpoint 2007. Mais peut-être d'autres l'ont fait et pourront répondre...
L'option /s est-elle supportée de la même façon ?...
Désolé !

Commentaire de dvdgzx le 13/11/2009 17:48:06 8/10

juste ce que je cherchais, il n'en faut pas plus

Commentaire de fredz30 le 26/03/2010 11:46:02 9/10

Parfait !

Commentaire de Apprentido le 29/12/2010 18:30:31

Bonsoir à toutes et à tous, tout d'abord merci PIERGEL d'avoir penser aux novices comme moi car tes commentaires sur ta source sont clairs. Aussi, je voulais te demander si tu pouvais m'envoyer l'executable du bandeau car je n'arrive pas à le compiler. Merci par avance et bonne fêtes à tous!

Commentaire de fredz30 le 10/02/2011 15:36:28

Bonjour,

quelques test avec le nouveau format pptx, mais j'arrive pas a modifier le code :(

help svp :)

Commentaire de piergel le 10/02/2011 15:47:35

Pour moi il devrait suffire de remplacer la ligne

   if ext="PPS" or ext="PPT" then

par

   if ext="PPS" or ext="PPT" or ext="PPSX" or ext="PPTX" then

non ?

Commentaire de piergel le 10/02/2011 15:52:40

il faut peut-être aussi mettre

   Const pptExe="Borne.pptx"

Si on ne fait plus que des pptx. Par contre si les deux doivent être possible, il y a peut-être un pb...

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Composants EXCEL 8, Word 8, PowerPoint 8 dans VB5 [ par PPI ] Je suis à la recherche de code permettant l'utilisation des composantsExcel 8 (excel97)Word 8 (Word97)PowerPoint 8 (Ppt97)dans un programme VB5.Pas un Insertion doc PowerPoint dans une form??? [ par pifou ] Comment inserer un document powerpoint dans une form.Merci de votre aide. durée fichier multimédia [ par Dan ] SalutEst-ce-qu'il existe une fonction ou un api capable de donner la durée d'un fichier mulmédia?Windows le fait dans le menu propriété d'un fichier,c Imprimer une présentation PowerPoint par un bouton [ par Estelle ] Bonjour,Débutante, je cherche le moyen de parvenir, lors de la visualisation d'une présentation PowerPoint, à imprimer l'ensemble de la présentation e créer un questionnaire powerpoint [ par Yo ] Je souhaite faire un vrai/faux avec powerpoint et j'aimerai que lorsqu'on clique la bonne réponse, le score augmente et que ca passe à la question sui Recherche OCX pour jouer PowerPoint [ par gilles ] Bonjour,je recherche un ocx qui joue des presentations de type powerpoint.j'utilise actuellement la visionneuse maisje ne peux pas la redimensionner p Vb6 et PowerPoint [ par anspauldou ] SalutJe voudrai aussi activer mes diapositives sous PowerPoint par Vb6.Merci d'avance ouvrir un diaporama Powerpoint (.pps) en VBA sous Excel [ par rvduclos ] SalutEst-ce que quelqu'un à une idée pour lancer un diaporama sous Excel.Je ne comprends pas pourquoi un shell ne fonctionne pas ?Shell ("C:\WINDOWS\B Lecteur multimédia : ajouter un visuel... [ par Jér-o-nimo ] Salut!Je suis en train de créer un lecteur audio et je voudrais intégrer un visuel ( vu-metre, etc...) . Je sais pas comment faire! (logique, sinon je Appel d'une sous-routine d'un exécutable VB à partir d'une macro VBA sous PowerPoint [ par lgagnier ] Bonjour,J'ai un petit problème, probablement rien de compliqué à règler, mais comme je ne suis pas encore familié avec la programmation VB et VBA j'ai


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,262 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales