Temporisation en millisecondes dans powerpoint 2010
Résolu/Fermé
pecaris2
Messages postés
8
Date d'inscription
lundi 3 septembre 2012
Statut
Membre
Dernière intervention
7 mars 2015
-
28 févr. 2013 à 00:53
pécaris2 - 8 mars 2013 à 23:48
pécaris2 - 8 mars 2013 à 23:48
A voir également:
- Vba temporisation
- Mkdir vba ✓ - Forum VB / VBA
- Vba récupérer valeur cellule ✓ - Forum VB / VBA
- Excel compter cellule couleur sans vba - Guide
- Vba range avec variable ✓ - Forum VB / VBA
- Autofill vba ✓ - Forum Excel
6 réponses
f894009
Messages postés
17217
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
27 décembre 2024
1 712
28 févr. 2013 à 09:58
28 févr. 2013 à 09:58
Bonjour,
a voir:
https://arkham46.developpez.com/articles/office/vba64bits/#LIV
a voir:
https://arkham46.developpez.com/articles/office/vba64bits/#LIV
pecaris2
Messages postés
8
Date d'inscription
lundi 3 septembre 2012
Statut
Membre
Dernière intervention
7 mars 2015
1 mars 2013 à 17:20
1 mars 2013 à 17:20
Merci f894009 pour cette indication. J'espérais avoir la solution, mais si j'ai bien compris :
Ce n'est pas un pb d'office 64bits, vu que que j'ai installé Office 2010 en 32bits (de façon implicite). Par contre Windows 8 est bien en 64bits.
Après les différents essais que j'ai fait, je conclue que j'accède bien à l'API kernel32, mais l'instruction sleep est inopérante dans la macro laquelle se déroule comme s'il n'y avait aucune instruction sleep.
Je précise que mes connaissances sont très proche de "0" dans ce domaine, alors ... Et le diagnostic apporté par l'inspecteur de compatibilité de code Microsoft Office ne m'éclaire pas
Voici la macro inspectée :
'<VBA_INSPECTOR_RUN />
'Option Explicit
'Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'<VBA_INSPECTOR>
' <DECLARE>
' <MESSAGE>Contains a Windows 32-bit API call that will need to be updated for 64bit compatibility.</MESSAGE>
' <ITEM>UPDATED: Declare PtrSafe Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)</ITEM>
' <URL>http://go.microsoft.com/fwlink/?LinkId=177572 </URL>
' </DECLARE>
'</VBA_INSPECTOR>
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'Déclaration pour permettre d'interrompre la boucle avec une touche
Private Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer
Sub Population()
'
' Macro enregistrée le 03/02/2013 par PRESARIO
'
Dim pop As Double
pop = 7607413001#
ActivePresentation.Slides(5).Shapes("ZoneTexte 2").TextFrame.TextRange.Text = FormatNumber(pop)
'<VBA_INSPECTOR>
' <DEPRECATION>
' <MESSAGE>Potentially contains deprecated items in the object model</MESSAGE>
' <ITEM>[mso]IFind.View</ITEM>
' <URL>http://go.microsoft.com/fwlink/?LinkID=215358 /URL>
' </DEPRECATION>
'</VBA_INSPECTOR>
ActivePresentation.SlideShowWindow.View.GotoSlide 5
Do
pop = pop + 1
Sleep 436
ActivePresentation.Slides(6).Shapes("ZoneTexte 2").TextFrame.TextRange.Text = FormatNumber(pop)
'<VBA_INSPECTOR>
' <DEPRECATION>
' <MESSAGE>Potentially contains deprecated items in the object model</MESSAGE>
' <ITEM>[mso]IFind.View</ITEM>
' <URL>http://go.microsoft.com/fwlink/?LinkID=215358 /URL>
' </DEPRECATION>
'</VBA_INSPECTOR>
ActivePresentation.SlideShowWindow.View.GotoSlide 6
pop = pop + 1
Sleep 436
ActivePresentation.Slides(5).Shapes("ZoneTexte 2").TextFrame.TextRange.Text = FormatNumber(pop)
'<VBA_INSPECTOR>
' <DEPRECATION>
' <MESSAGE>Potentially contains deprecated items in the object model</MESSAGE>
' <ITEM>[mso]IFind.View</ITEM>
' <URL>http://go.microsoft.com/fwlink/?LinkID=215358 /URL>
' </DEPRECATION>
'</VBA_INSPECTOR>
ActivePresentation.SlideShowWindow.View.GotoSlide 5
'Condition permettant d'interrompre la boucle avec les touches : A, Espace
If GetAsyncKeyState(vbKeyA) Or GetAsyncKeyState(vbKeySpace) <> 0 Then Exit Do
Loop
'<VBA_INSPECTOR>
' <DEPRECATION>
' <MESSAGE>Potentially contains deprecated items in the object model</MESSAGE>
' <ITEM>[mso]IFind.View</ITEM>
' <URL>http://go.microsoft.com/fwlink/?LinkID=215358 /URL>
' </DEPRECATION>
'</VBA_INSPECTOR>
Ce n'est pas un pb d'office 64bits, vu que que j'ai installé Office 2010 en 32bits (de façon implicite). Par contre Windows 8 est bien en 64bits.
Après les différents essais que j'ai fait, je conclue que j'accède bien à l'API kernel32, mais l'instruction sleep est inopérante dans la macro laquelle se déroule comme s'il n'y avait aucune instruction sleep.
Je précise que mes connaissances sont très proche de "0" dans ce domaine, alors ... Et le diagnostic apporté par l'inspecteur de compatibilité de code Microsoft Office ne m'éclaire pas
Voici la macro inspectée :
'<VBA_INSPECTOR_RUN />
'Option Explicit
'Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'<VBA_INSPECTOR>
' <DECLARE>
' <MESSAGE>Contains a Windows 32-bit API call that will need to be updated for 64bit compatibility.</MESSAGE>
' <ITEM>UPDATED: Declare PtrSafe Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)</ITEM>
' <URL>http://go.microsoft.com/fwlink/?LinkId=177572 </URL>
' </DECLARE>
'</VBA_INSPECTOR>
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'Déclaration pour permettre d'interrompre la boucle avec une touche
Private Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer
Sub Population()
'
' Macro enregistrée le 03/02/2013 par PRESARIO
'
Dim pop As Double
pop = 7607413001#
ActivePresentation.Slides(5).Shapes("ZoneTexte 2").TextFrame.TextRange.Text = FormatNumber(pop)
'<VBA_INSPECTOR>
' <DEPRECATION>
' <MESSAGE>Potentially contains deprecated items in the object model</MESSAGE>
' <ITEM>[mso]IFind.View</ITEM>
' <URL>http://go.microsoft.com/fwlink/?LinkID=215358 /URL>
' </DEPRECATION>
'</VBA_INSPECTOR>
ActivePresentation.SlideShowWindow.View.GotoSlide 5
Do
pop = pop + 1
Sleep 436
ActivePresentation.Slides(6).Shapes("ZoneTexte 2").TextFrame.TextRange.Text = FormatNumber(pop)
'<VBA_INSPECTOR>
' <DEPRECATION>
' <MESSAGE>Potentially contains deprecated items in the object model</MESSAGE>
' <ITEM>[mso]IFind.View</ITEM>
' <URL>http://go.microsoft.com/fwlink/?LinkID=215358 /URL>
' </DEPRECATION>
'</VBA_INSPECTOR>
ActivePresentation.SlideShowWindow.View.GotoSlide 6
pop = pop + 1
Sleep 436
ActivePresentation.Slides(5).Shapes("ZoneTexte 2").TextFrame.TextRange.Text = FormatNumber(pop)
'<VBA_INSPECTOR>
' <DEPRECATION>
' <MESSAGE>Potentially contains deprecated items in the object model</MESSAGE>
' <ITEM>[mso]IFind.View</ITEM>
' <URL>http://go.microsoft.com/fwlink/?LinkID=215358 /URL>
' </DEPRECATION>
'</VBA_INSPECTOR>
ActivePresentation.SlideShowWindow.View.GotoSlide 5
'Condition permettant d'interrompre la boucle avec les touches : A, Espace
If GetAsyncKeyState(vbKeyA) Or GetAsyncKeyState(vbKeySpace) <> 0 Then Exit Do
Loop
'<VBA_INSPECTOR>
' <DEPRECATION>
' <MESSAGE>Potentially contains deprecated items in the object model</MESSAGE>
' <ITEM>[mso]IFind.View</ITEM>
' <URL>http://go.microsoft.com/fwlink/?LinkID=215358 /URL>
' </DEPRECATION>
'</VBA_INSPECTOR>
f894009
Messages postés
17217
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
27 décembre 2024
1 712
1 mars 2013 à 17:50
1 mars 2013 à 17:50
Bonjour,
Pourriez-vous montrez le code de cette macro, que je puisse le copier et tester
A+
Pourriez-vous montrez le code de cette macro, que je puisse le copier et tester
A+
pecaris2
Messages postés
8
Date d'inscription
lundi 3 septembre 2012
Statut
Membre
Dernière intervention
7 mars 2015
1 mars 2013 à 18:18
1 mars 2013 à 18:18
Merci de vous penchez sur le pb.
Je continue à faire des essais .Je tente de me dispenser de faire appel à Kernell32 en introduisant une boucle for qui ferait la tempo et la non plus je n'ai pas la mise à jour des diapos, alors peut-être que ce n'est pas un pb de tempo. Pour l'instant, je ne suis pas sûr de mes conclusions.
En attendant voici la macro.
Donc le slide 4 permet de lancer la macro, les slides 5 et 6 sont identiques avec 2 ZoneTexte dont celui du compteur à incrémenter et la macro est interrompu avec la touche A ou SPACE pour aller sur le slide 7 et ainsi poursuivre le diaporama
Macro telle qu'écrite à l'origine
'Option Explicit
'Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'Déclaration pour permettre d'interrompre la boucle avec une touche
Private Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer
Sub Population()
'
' Macro enregistrée le 03/02/2013 par PRESARIO
'
Dim pop As Double
pop = 7607413001#
ActivePresentation.Slides(5).Shapes("ZoneTexte 2").TextFrame.TextRange.Text = FormatNumber(pop)
ActivePresentation.SlideShowWindow.View.GotoSlide 5
Do
pop = pop + 1
Sleep 436
ActivePresentation.Slides(6).Shapes("ZoneTexte 2").TextFrame.TextRange.Text = FormatNumber(pop)
ActivePresentation.SlideShowWindow.View.GotoSlide 6
pop = pop + 1
Sleep 436
ActivePresentation.Slides(5).Shapes("ZoneTexte 2").TextFrame.TextRange.Text = FormatNumber(pop)
ActivePresentation.SlideShowWindow.View.GotoSlide 5
'Condition permettant d'interrompre la boucle avec les touches : A, Espace
If GetAsyncKeyState(vbKeyA) Or GetAsyncKeyState(vbKeySpace) <> 0 Then Exit Do
Loop
ActivePresentation.SlideShowWindow.View.GotoSlide 7
End Sub
Je continue à faire des essais .Je tente de me dispenser de faire appel à Kernell32 en introduisant une boucle for qui ferait la tempo et la non plus je n'ai pas la mise à jour des diapos, alors peut-être que ce n'est pas un pb de tempo. Pour l'instant, je ne suis pas sûr de mes conclusions.
En attendant voici la macro.
Donc le slide 4 permet de lancer la macro, les slides 5 et 6 sont identiques avec 2 ZoneTexte dont celui du compteur à incrémenter et la macro est interrompu avec la touche A ou SPACE pour aller sur le slide 7 et ainsi poursuivre le diaporama
Macro telle qu'écrite à l'origine
'Option Explicit
'Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
'Déclaration pour permettre d'interrompre la boucle avec une touche
Private Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Integer
Sub Population()
'
' Macro enregistrée le 03/02/2013 par PRESARIO
'
Dim pop As Double
pop = 7607413001#
ActivePresentation.Slides(5).Shapes("ZoneTexte 2").TextFrame.TextRange.Text = FormatNumber(pop)
ActivePresentation.SlideShowWindow.View.GotoSlide 5
Do
pop = pop + 1
Sleep 436
ActivePresentation.Slides(6).Shapes("ZoneTexte 2").TextFrame.TextRange.Text = FormatNumber(pop)
ActivePresentation.SlideShowWindow.View.GotoSlide 6
pop = pop + 1
Sleep 436
ActivePresentation.Slides(5).Shapes("ZoneTexte 2").TextFrame.TextRange.Text = FormatNumber(pop)
ActivePresentation.SlideShowWindow.View.GotoSlide 5
'Condition permettant d'interrompre la boucle avec les touches : A, Espace
If GetAsyncKeyState(vbKeyA) Or GetAsyncKeyState(vbKeySpace) <> 0 Then Exit Do
Loop
ActivePresentation.SlideShowWindow.View.GotoSlide 7
End Sub
pecaris2
Messages postés
8
Date d'inscription
lundi 3 septembre 2012
Statut
Membre
Dernière intervention
7 mars 2015
5 mars 2013 à 01:32
5 mars 2013 à 01:32
J'ai mieux cerné mon problème en mode présentateur.
La macro démarre bien lorsque je clique sur la diapo 4 côté présentateur. On voit , sous la diapo présentateur l'indice de la diapo active passer au rythme des 500ms prendre alternativement, les valeurs 5 et 6, mais rien ne change sur l'écran de "projection".
Seul cet indice de diapo change.
Et la macro s'interrompt par appui sur la touche A, comme il est prévu dans la macro et la diapo 7 s'affiche sur les 2 écrans présentateur et de projection.
Alors que tout fonctionne correctement sous Windows XP et PowerPoint 2003.
Dès que possible j'essayerai d'installer sous XP Office 2010 à la place du 2003 et de tester la macro.
Je dispose d'un petit PowerPoint d'essai de 346Ko mais je ne sais pas comment le mettre en p.j.
Merci pour toute aide
La macro démarre bien lorsque je clique sur la diapo 4 côté présentateur. On voit , sous la diapo présentateur l'indice de la diapo active passer au rythme des 500ms prendre alternativement, les valeurs 5 et 6, mais rien ne change sur l'écran de "projection".
Seul cet indice de diapo change.
Et la macro s'interrompt par appui sur la touche A, comme il est prévu dans la macro et la diapo 7 s'affiche sur les 2 écrans présentateur et de projection.
Alors que tout fonctionne correctement sous Windows XP et PowerPoint 2003.
Dès que possible j'essayerai d'installer sous XP Office 2010 à la place du 2003 et de tester la macro.
Je dispose d'un petit PowerPoint d'essai de 346Ko mais je ne sais pas comment le mettre en p.j.
Merci pour toute aide
f894009
Messages postés
17217
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
27 décembre 2024
1 712
5 mars 2013 à 08:52
5 mars 2013 à 08:52
Bonjour,
pour mettre a dispo: click sur le lien https://www.cjoint.com/
Ne pas oublier de copier le lien cree
A+
pour mettre a dispo: click sur le lien https://www.cjoint.com/
Ne pas oublier de copier le lien cree
A+
pecaris2
Messages postés
8
Date d'inscription
lundi 3 septembre 2012
Statut
Membre
Dernière intervention
7 mars 2015
5 mars 2013 à 19:14
5 mars 2013 à 19:14
Le diaporama d'essai est accessible par ce lien https://www.cjoint.com/?3CftfoDrZme
Je me suis rendu compte après avoir validé que le lien ne restera valide que 4 jours, ce qui est peut-être un peu court. si besoin je le renouvellerai.
Merci pour votre aide.
Je me suis rendu compte après avoir validé que le lien ne restera valide que 4 jours, ce qui est peut-être un peu court. si besoin je le renouvellerai.
Merci pour votre aide.
f894009
Messages postés
17217
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
27 décembre 2024
1 712
6 mars 2013 à 08:00
6 mars 2013 à 08:00
Bonjour,
Je recuper et vous tients au courant
A+
Je recuper et vous tients au courant
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
f894009
Messages postés
17217
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
27 décembre 2024
1 712
8 mars 2013 à 10:40
8 mars 2013 à 10:40
Bonjour,
Il y a encore un petit soucis a la fin, demande si sauvegarde
Dossier compresse (pptm et ppsm)
https://www.cjoint.com/c/CCikJIRRQ23
un doc qui explique le fonctionnement du VBA sur evenements
https://www.cjoint.com/c/CCikLTHgFkp
lancez le diaporama (.ppsm) et regardez.
A+
Il y a encore un petit soucis a la fin, demande si sauvegarde
Dossier compresse (pptm et ppsm)
https://www.cjoint.com/c/CCikJIRRQ23
un doc qui explique le fonctionnement du VBA sur evenements
https://www.cjoint.com/c/CCikLTHgFkp
lancez le diaporama (.ppsm) et regardez.
A+
Bonsoir,
Je suis très heureux, le compteur tourne dans le diaporama.
J'ai un peu triché, je me suis contenté de jouer du copier/coller sans tout comprendre (tout est presque de trop). J'ai du pain sur la planche pour assimiler cette gestion d'évènements.
Il me semble que dans mes recherches, j'étais tombés sur la doc expliquant la gestion des évènements, mais je n'avais pas compris l'intérêt, surtout que peu après javais réussi à faire tourné mon compteur avec Office 2003 bien sûr.
Pour des premiers pas en VBA, je trouve la pente un peu raide.
En tout cas grand merci f894009, vous me rendez un grand service, le PowerPoint sera présenté le 16 mars, il était temps....
Merci.
Je suis très heureux, le compteur tourne dans le diaporama.
J'ai un peu triché, je me suis contenté de jouer du copier/coller sans tout comprendre (tout est presque de trop). J'ai du pain sur la planche pour assimiler cette gestion d'évènements.
Il me semble que dans mes recherches, j'étais tombés sur la doc expliquant la gestion des évènements, mais je n'avais pas compris l'intérêt, surtout que peu après javais réussi à faire tourné mon compteur avec Office 2003 bien sûr.
Pour des premiers pas en VBA, je trouve la pente un peu raide.
En tout cas grand merci f894009, vous me rendez un grand service, le PowerPoint sera présenté le 16 mars, il était temps....
Merci.