Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Coder une copie d'écran

15 réponses
Avatar
LargoWinch
Bonjour,

j'ai besoin d'automatiser une capture d'écran et un collage de cette
capture.
J'essaie le code suivant

Sub Test_ImprEcran()
SendKeys ("{PRTSC}")
SendKeys ("^v")
End Sub

ou (pour forcer sur la fenetre active)
Sub Test_ImprEcran()
SendKeys ("%{PRTSC}")
SendKeys ("^v")
End Sub

Le SendKeys ("%{PRTSC}") ne semble rien copier, puisque le Ctrl-V ne me
ramène que la copie précédente. Y-a-t-il une astuce pour simuler le "Imp
Ecr" ?

Merci

10 réponses

1 2
Avatar
michdenis
Ceci fonctionne très bien chez moi.

ça imprime et colle la fenêtre Excel dans Excel.
'----------------------------
Sub Test_ImprEcran()
SendKeys "%{PRTSC}"
SendKeys "^v"
ActiveWindow.Activate
End Sub
'----------------------------



"LargoWinch" a écrit dans le message de groupe de
discussion : go3ofh$tg4$
Bonjour,

j'ai besoin d'automatiser une capture d'écran et un collage de cette
capture.
J'essaie le code suivant

Sub Test_ImprEcran()
SendKeys ("{PRTSC}")
SendKeys ("^v")
End Sub

ou (pour forcer sur la fenetre active)
Sub Test_ImprEcran()
SendKeys ("%{PRTSC}")
SendKeys ("^v")
End Sub

Le SendKeys ("%{PRTSC}") ne semble rien copier, puisque le Ctrl-V ne me
ramène que la copie précédente. Y-a-t-il une astuce pour simuler le "Imp
Ecr" ?

Merci
Avatar
garnote
Ave,

Trouvé ça à cette adresse :
http://www.excel-downloads.com/forum/47258-r-aliser-une-capture-d-cran.html
Je n'y comprends rien mais ça fonctionne !
J'ai cependant constaté qu'il faut appeler cette macro par une touche de raccourci.

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal
dwExtraInfo As Long)
Sub Copie()
keybd_event vbKeySnapshot, 1, 0&, 0&
DoEvents
Range("A1").Select
ActiveSheet.Paste
End Sub

Serge


"LargoWinch" a écrit dans le message de news: go3ofh$tg4$
Bonjour,

j'ai besoin d'automatiser une capture d'écran et un collage de cette capture.
J'essaie le code suivant

Sub Test_ImprEcran()
SendKeys ("{PRTSC}")
SendKeys ("^v")
End Sub

ou (pour forcer sur la fenetre active)
Sub Test_ImprEcran()
SendKeys ("%{PRTSC}")
SendKeys ("^v")
End Sub

Le SendKeys ("%{PRTSC}") ne semble rien copier, puisque le Ctrl-V ne me ramène que la copie précédente. Y-a-t-il une astuce
pour simuler le "Imp Ecr" ?

Merci


Avatar
LargoWinch
michdenis a écrit :
Ceci fonctionne très bien chez moi.

ça imprime et colle la fenêtre Excel dans Excel.
'----------------------------
Sub Test_ImprEcran()
SendKeys "%{PRTSC}"
SendKeys "^v"
ActiveWindow.Activate
End Sub
'----------------------------





Avec ou sans parenthèse avec ou sans %, avec Word ou Excel 2003, j'ai
toujours le même comportement : le "Impr Ecran" ne se fait pas. Le
collage est ok, pas la copie :/ .

J'ai testé en arrêtant Gadwin Print Screen, un petit outil qui permet de
faire des captures d'écrans, pas mieux.
Avatar
michdenis
As-tu essayé ce que t'a proposé Garnote ?
'Tout au haut d'un module standard , tu copies
'ceci : un API
Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

'Et tu exécutes la macro suivante :
'---------------------------------------
Sub Copie()
keybd_event vbKeySnapshot, 1, 0&, 0&
DoEvents
Range("A1").Select
ActiveSheet.Paste
End Sub
'---------------------------------------



"LargoWinch" a écrit dans le message de groupe de
discussion : go61hk$hn6$
michdenis a écrit :
Ceci fonctionne très bien chez moi.

ça imprime et colle la fenêtre Excel dans Excel.
'----------------------------
Sub Test_ImprEcran()
SendKeys "%{PRTSC}"
SendKeys "^v"
ActiveWindow.Activate
End Sub
'----------------------------





Avec ou sans parenthèse avec ou sans %, avec Word ou Excel 2003, j'ai
toujours le même comportement : le "Impr Ecran" ne se fait pas. Le
collage est ok, pas la copie :/ .

J'ai testé en arrêtant Gadwin Print Screen, un petit outil qui permet de
faire des captures d'écrans, pas mieux.
Avatar
LargoWinch
michdenis a écrit :
As-tu essayé ce que t'a proposé Garnote ?
'Tout au haut d'un module standard , tu copies
'ceci : un API
Private Declare Sub keybd_event Lib "user32" _
(ByVal bVk As Byte, ByVal bScan As Byte, _
ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

'Et tu exécutes la macro suivante :
'---------------------------------------
Sub Copie()
keybd_event vbKeySnapshot, 1, 0&, 0&
DoEvents
Range("A1").Select
ActiveSheet.Paste
End Sub
'---------------------------------------




Je n'avais pas testé, effectivement, ca marche. Mais la méthode est
quand même plus lourde, j'aurai aimé comprendre pourquoi ma version ne
marche pas.
Avatar
LargoWinch
garnote a écrit :
Ave,

Trouvé ça à cette adresse :
http://www.excel-downloads.com/forum/47258-r-aliser-une-capture-d-cran.html
Je n'y comprends rien mais ça fonctionne !
J'ai cependant constaté qu'il faut appeler cette macro par une touche de raccourci.

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal
dwExtraInfo As Long)
Sub Copie()
keybd_event vbKeySnapshot, 1, 0&, 0&
DoEvents
Range("A1").Select
ActiveSheet.Paste
End Sub

Serge



Effectivement, ca marche bien. Merci

sous excel, j'ai pu appeler la macro sans passer par un raccourci clavier.
Avatar
garnote
"LargoWinch" a écrit dans le message de news: go6hgm$lu3$
garnote a écrit :
Ave,

Trouvé ça à cette adresse :
http://www.excel-downloads.com/forum/47258-r-aliser-une-capture-d-cran.html
Je n'y comprends rien mais ça fonctionne !
J'ai cependant constaté qu'il faut appeler cette macro par une touche de raccourci.

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal
dwExtraInfo As Long)
Sub Copie()
keybd_event vbKeySnapshot, 1, 0&, 0&
DoEvents
Range("A1").Select
ActiveSheet.Paste
End Sub

Serge



Effectivement, ca marche bien. Merci

sous excel, j'ai pu appeler la macro sans passer par un raccourci clavier.


Avatar
garnote
> sous excel, j'ai pu appeler la macro sans passer par un raccourci clavier.


Je voulais dire « l'appeler sans passer par la boÎte de dialogue Macro »,
à moins de vouloir que cette boîte apparaisse dans la capture d'écran.





"LargoWinch" a écrit dans le message de news: go6hgm$lu3$
garnote a écrit :
Ave,

Trouvé ça à cette adresse :
http://www.excel-downloads.com/forum/47258-r-aliser-une-capture-d-cran.html
Je n'y comprends rien mais ça fonctionne !
J'ai cependant constaté qu'il faut appeler cette macro par une touche de raccourci.

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal
dwExtraInfo As Long)
Sub Copie()
keybd_event vbKeySnapshot, 1, 0&, 0&
DoEvents
Range("A1").Select
ActiveSheet.Paste
End Sub

Serge



Effectivement, ca marche bien. Merci

sous excel, j'ai pu appeler la macro sans passer par un raccourci clavier.


Avatar
LargoWinch
garnote a écrit :
sous excel, j'ai pu appeler la macro sans passer par un raccourci clavier.


Je voulais dire « l'appeler sans passer par la boÎte de dialogue Macro »,
à moins de vouloir que cette boîte apparaisse dans la capture d'écran.




Ok. Moi, c'était juste pour tester.

Juste une question : pourquoi vouloir a tout prix répondre en haut,
quitte à être obligé de copier-coller ma dernière phrase ?




"LargoWinch" a écrit dans le message de news: go6hgm$lu3$
garnote a écrit :
Ave,

Trouvé ça à cette adresse :
http://www.excel-downloads.com/forum/47258-r-aliser-une-capture-d-cran.html
Je n'y comprends rien mais ça fonctionne !
J'ai cependant constaté qu'il faut appeler cette macro par une touche de raccourci.

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal
dwExtraInfo As Long)
Sub Copie()
keybd_event vbKeySnapshot, 1, 0&, 0&
DoEvents
Range("A1").Select
ActiveSheet.Paste
End Sub

Serge



Effectivement, ca marche bien. Merci

sous excel, j'ai pu appeler la macro sans passer par un raccourci clavier.






Avatar
Modeste
Bonsour® LargoWinch

Juste une question : pourquoi vouloir a tout prix répondre en haut,
quitte à être obligé de copier-coller ma dernière phrase ?



parce que de façon consensuelle il a été maintes fois admis *SUR CE FORUM*
1 - qu'il était souvent inutile de répeter(reproduire le texte) entierement la question
2 - sinon qu'il suffisait d'élager totalement la partie de la question qui ne faisait pas l'objet de la réponse
3 - qu'en utilisant correctement son browser avec l'option "grouper les messages par conversation"
les réponses ce lisaient chronologiquement comme une conversation
;o))) "Vous-voulez bien répéter la question ???
1 2