J'ai une macro qui fait des calculs pas à pas. Je voudrais que la macro
s'arrête à un endroit et ne poursuive son exécution que lorsque
l'utilisateur appuie sur la touche espace, cela afin de voir l'évolution des
résultats des calculs sur la feuille. Est-ce possible ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Frédéric Sigonneau
Bonsoir,
Pour 'capturer' l'appui sur la touche Espace, tu peux utiliser ce genre de code (à recopier dans un module standard) :
'=========================== Public Type KeyboardBytes kbOctet(0 To 255) As Byte End Type
Public kbArray As KeyboardBytes
Public Declare Function GetKeyboardState Lib "user32" _ (kbArray As KeyboardBytes) As Long Public Declare Function SetKeyboardState Lib "user32" _ (kbArray As KeyboardBytes) As Long
Sub test() 'on s'assure que la touche espace est bien 'en position "relevée" kbArray.kbOctet(&H20) = 0 SetKeyboardState kbArray 'boucle en attendant l'appui sur la touche espace Do GetKeyboardState kbArray DoEvents Loop While kbArray.kbOctet(&H20) = 0 'la touche espace a été enfoncée MsgBox "coucou" End Sub '=========================== FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir,
J'ai une macro qui fait des calculs pas à pas. Je voudrais que la macro s'arrête à un endroit et ne poursuive son exécution que lorsque l'utilisateur appuie sur la touche espace, cela afin de voir l'évolution des résultats des calculs sur la feuille. Est-ce possible ?
Pour 'capturer' l'appui sur la touche Espace, tu peux utiliser ce genre de code
(à recopier dans un module standard) :
'=========================== Public Type KeyboardBytes
kbOctet(0 To 255) As Byte
End Type
Public kbArray As KeyboardBytes
Public Declare Function GetKeyboardState Lib "user32" _
(kbArray As KeyboardBytes) As Long
Public Declare Function SetKeyboardState Lib "user32" _
(kbArray As KeyboardBytes) As Long
Sub test()
'on s'assure que la touche espace est bien
'en position "relevée"
kbArray.kbOctet(&H20) = 0
SetKeyboardState kbArray
'boucle en attendant l'appui sur la touche espace
Do
GetKeyboardState kbArray
DoEvents
Loop While kbArray.kbOctet(&H20) = 0
'la touche espace a été enfoncée
MsgBox "coucou"
End Sub
'===========================
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir,
J'ai une macro qui fait des calculs pas à pas. Je voudrais que la macro
s'arrête à un endroit et ne poursuive son exécution que lorsque
l'utilisateur appuie sur la touche espace, cela afin de voir l'évolution des
résultats des calculs sur la feuille. Est-ce possible ?
Pour 'capturer' l'appui sur la touche Espace, tu peux utiliser ce genre de code (à recopier dans un module standard) :
'=========================== Public Type KeyboardBytes kbOctet(0 To 255) As Byte End Type
Public kbArray As KeyboardBytes
Public Declare Function GetKeyboardState Lib "user32" _ (kbArray As KeyboardBytes) As Long Public Declare Function SetKeyboardState Lib "user32" _ (kbArray As KeyboardBytes) As Long
Sub test() 'on s'assure que la touche espace est bien 'en position "relevée" kbArray.kbOctet(&H20) = 0 SetKeyboardState kbArray 'boucle en attendant l'appui sur la touche espace Do GetKeyboardState kbArray DoEvents Loop While kbArray.kbOctet(&H20) = 0 'la touche espace a été enfoncée MsgBox "coucou" End Sub '=========================== FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Bonsoir,
J'ai une macro qui fait des calculs pas à pas. Je voudrais que la macro s'arrête à un endroit et ne poursuive son exécution que lorsque l'utilisateur appuie sur la touche espace, cela afin de voir l'évolution des résultats des calculs sur la feuille. Est-ce possible ?
Pour 'capturer' l'appui sur la touche Espace, tu peux utiliser ce genre de code (à recopier dans un module standard) :
'=========================== > Public Type KeyboardBytes kbOctet(0 To 255) As Byte End Type
Public kbArray As KeyboardBytes
Public Declare Function GetKeyboardState Lib "user32" _ (kbArray As KeyboardBytes) As Long Public Declare Function SetKeyboardState Lib "user32" _ (kbArray As KeyboardBytes) As Long
Sub test() 'on s'assure que la touche espace est bien 'en position "relevée" kbArray.kbOctet(&H20) = 0 SetKeyboardState kbArray 'boucle en attendant l'appui sur la touche espace Do GetKeyboardState kbArray DoEvents Loop While kbArray.kbOctet(&H20) = 0 'la touche espace a été enfoncée MsgBox "coucou" End Sub '=========================== > FS
Bonsoir,
J'ai une macro qui fait des calculs pas à pas. Je voudrais que la macro s'arrête à un endroit et ne poursuive son exécution que lorsque l'utilisateur appuie sur la touche espace, cela afin de voir l'évolution des résultats des calculs sur la feuille. Est-ce possible ?
Pour 'capturer' l'appui sur la touche Espace, tu peux utiliser ce
genre de code (à recopier dans un module standard) :
'=========================== > Public Type KeyboardBytes
kbOctet(0 To 255) As Byte
End Type
Public kbArray As KeyboardBytes
Public Declare Function GetKeyboardState Lib "user32" _
(kbArray As KeyboardBytes) As Long
Public Declare Function SetKeyboardState Lib "user32" _
(kbArray As KeyboardBytes) As Long
Sub test()
'on s'assure que la touche espace est bien
'en position "relevée"
kbArray.kbOctet(&H20) = 0
SetKeyboardState kbArray
'boucle en attendant l'appui sur la touche espace
Do
GetKeyboardState kbArray
DoEvents
Loop While kbArray.kbOctet(&H20) = 0
'la touche espace a été enfoncée
MsgBox "coucou"
End Sub
'=========================== >
FS
Bonsoir,
J'ai une macro qui fait des calculs pas à pas. Je voudrais que la
macro s'arrête à un endroit et ne poursuive son exécution que lorsque
l'utilisateur appuie sur la touche espace, cela afin de voir
l'évolution des résultats des calculs sur la feuille. Est-ce
possible ?
Pour 'capturer' l'appui sur la touche Espace, tu peux utiliser ce genre de code (à recopier dans un module standard) :
'=========================== > Public Type KeyboardBytes kbOctet(0 To 255) As Byte End Type
Public kbArray As KeyboardBytes
Public Declare Function GetKeyboardState Lib "user32" _ (kbArray As KeyboardBytes) As Long Public Declare Function SetKeyboardState Lib "user32" _ (kbArray As KeyboardBytes) As Long
Sub test() 'on s'assure que la touche espace est bien 'en position "relevée" kbArray.kbOctet(&H20) = 0 SetKeyboardState kbArray 'boucle en attendant l'appui sur la touche espace Do GetKeyboardState kbArray DoEvents Loop While kbArray.kbOctet(&H20) = 0 'la touche espace a été enfoncée MsgBox "coucou" End Sub '=========================== > FS
Bonsoir,
J'ai une macro qui fait des calculs pas à pas. Je voudrais que la macro s'arrête à un endroit et ne poursuive son exécution que lorsque l'utilisateur appuie sur la touche espace, cela afin de voir l'évolution des résultats des calculs sur la feuille. Est-ce possible ?