Bonjour tout le monde,
je bosse en ce moment sur un addin pour PowerPoint (donc je bosse en VBA).
Ce que je veux faire c'est envoyer les titres des slides a un site web pendant un slideshow.
J'ai reussi a faire ca mais j'ai realise que l'appel http prend du temps et du coup, j'aimerais faire cet appel uniquement pour les slides sur lesquels je reste plus d'une seconde. (autrement c'est impossible de naviguer entre les slides correctement)
Donc, j'ai un Sub App_SlideShowNextSlide qui est lance quand je change de slide (logique !).
La, j'ai :
index = ActivePresentation.SlideShowWindow.View.Slide.SlideIndex
Delay 1
If (index = ActivePresentation.SlideShowWindow.View.Slide.SlideIndex) Then
MsgBox "send the title"
Call SendTitleFunction
End If |
et ma fonction Delay est :
Function Delay(nbSeconds As Double) As Boolean
Const OneSecond As Double = 1# / (1440# * 60#)
Dim endTime As Date
endTime = Now + OneSecond * nbSeconds
Do Until Now > endTime
Sleep 100
DoEvents
Loop
End Function |
Le probleme est que si j'utilise la barre d'espace, les fleches ou 'page up' 'page down', il semble que le DoEvents ne les prends pas en compte et envoie ainsi le titre.
La presence de index dans SlideShowNextSlide est pour ne pas envoyer le slide si jamais j'ai change de slide pendant l'attente (solution pas ideale, je voudrais pouvoir arreter tous les appels a Delay a chaque fois que je change de slide).
Donc, mes questions sont :
-avez-vous une meilleure solution pour remplacer la verification avec index ?
-ai-je raison pour les events effectivement catches par DoEvents ? et si oui, comment puis-je catcher tous les evenements de changement de slide ?
Si vous pouvez m'aider ce serait cool. Merci d'avance !
R.
Message édité par Raspoutim le 09-12-2004 à 01:20:59