Imprim écran avec windows 64bits

fanic

XLDnaute Nouveau
Bonjour à tous,

Je fais appel au forum car je souhaite faire une impression écran à partir d'un formulaire.
Pour cela j'ai créé un icone sur mon formulaire et je voudrai générer l'impression lorsqu'on clique sur ce bonton.
J'ai testé des codes proposés sur ce forum mais ils ne fonctionnenet pas en 64bits.

Merci d'avance
 

Roland_M

XLDnaute Barbatruc
Re : Imprim écran avec windows 64bits

bonjour,

ceci fonctionne chez moi, sous win 7 64 bits

sauve le fichier, voir le chemin et le nom du fichier !?
et l'impression, ici mis en rem, et que je n'ai pas essayé !?

Code:
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwflags As Long, ByVal dwExtraInfo As Long)
Sub SaveScreen()
Dim Ws As Worksheet
'Copie d'écran de la forme active par simulation de la touche
keybd_event vbKeySnapshot, 1, 0&, 0&: DoEvents '!
'Ajoute une feuille pour coller l'image
Set Ws = Sheets.Add: Ws.Paste

'impression de la feuille avec image
'With Ws.PageSetup
' .Zoom = False 'si true FitToPagesTall invalide
' .Orientation = xlLandscape
' .CenterHorizontally = True
' .CenterVertically = True
' .FitToPagesTall = 1 'impose sur la hauteur de la page
' .FitToPagesWide = 1 'impose sur la largeur de la page
'End With
'Ws.Application.Dialogs(xlDialogPrint).Show

'save l'écran sur disque
'il copy d'abord l'objet pour le sauver
Dim Pict As Picture
For Each Pict In ActiveSheet.Pictures
  'MsgBox Pict.Name
  Pict.CopyPicture xlScreen, xlBitmap
  With ActiveSheet.ChartObjects.Add(0, 0, Pict.Width, Pict.Height).Chart
    .Paste
    .Export "E:\" & Pict.Name & ".gif", "GIF" 'ou ".jpg", "JPG"
  End With
  X = ActiveSheet.ChartObjects.Count
  ActiveSheet.ChartObjects(X).Delete 'efface le dernier
Next
End Sub
 

fanic

XLDnaute Nouveau
Re : Imprim écran avec windows 64bits

Bonjour,

Merci de ta réponse Roland.
Malheureusement, j'ai toujours le même message d'erreur (Erreur de compilation) au niveau de la première ligne
Public Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwflags As Long, ByVal dwExtraInfo As Long)) avec Sub en surbrillance.
A priori il demande d'utiliser l'attribut PtrSafe
 

Roland_M

XLDnaute Barbatruc
Re : Imprim écran avec windows 64bits

re

attention cette ligne doit être tout en haut d'un module !
et pas avec la routine !
voir comme ceci dans classeur1
 

Pièces jointes

  • Classeur1.xlsm
    12 KB · Affichages: 37
  • Classeur1.xlsm
    12 KB · Affichages: 40
  • Classeur1.xlsm
    12 KB · Affichages: 41

fanic

XLDnaute Nouveau
Re : Imprim écran avec windows 64bits

Roland,

oui oui, c'est bien ce que j'ai fait...;-)
J'ai le même message en ouvrant ton fichier
 

Pièces jointes

  • Capture.jpg
    Capture.jpg
    29.7 KB · Affichages: 40
  • Capture.jpg
    Capture.jpg
    29.7 KB · Affichages: 47
  • Capture.jpg
    Capture.jpg
    29.7 KB · Affichages: 39

Roland_M

XLDnaute Barbatruc
Re : Imprim écran avec windows 64bits

re

il y a confusion !
j'ai win7 64 mais Office 2007 !
donc pour toi il faut essayer avec ceci (à la place de l'autre)

Declare PtrSafe Sub Alias "keybd_event" Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As LongPtr)
 

fanic

XLDnaute Nouveau
Re : Imprim écran avec windows 64bits

Roland,

C'est de ma faute je n'avais pas mis à jour ma version d'excel sur mon profil...
Avec cette nouvelle ligne j'ai une erreur de compilation cf cidessous

Merci.
 

Pièces jointes

  • Capture.JPG
    Capture.JPG
    36.8 KB · Affichages: 47
  • Capture.JPG
    Capture.JPG
    36.8 KB · Affichages: 40
  • Capture.JPG
    Capture.JPG
    36.8 KB · Affichages: 49

Roland_M

XLDnaute Barbatruc
Re : Imprim écran avec windows 64bits

re

difficile de t'aider mais ...

essai avec ou sans les guillemets et sans alias !?
comme ceci !?

Declare PtrSafe Sub Alias keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As LongPtr)


Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As LongPtr)
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 957
Membres
103 990
dernier inscrit
lamiadebz