Bonjour
J'ai un soucis lorsque je veux copier/coller un Userform dans une feuille excel dans le but de l'enregistrer en PDF.
Je suis parti de de ce morceau de code :
Option Explicit
Private Declare Sub keybd_event Lib "user32" ( _
ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, _
ByVal dwExtraInfo As Long)
Private Sub commandButton1_Click()
keybd_event vbKeySnapshot, 1, 0&, 0&
DoEvents
Range("A1").Select
ActiveSheet.Paste
End Sub
Le soucis c'est que de temps en temps , lorsque je colle l'objet , c'est autre chose qui vient se coller , provenant d'un copier/coller précédent.
Donc j'ai voulu vider la memoire avant de faire le copier/coller
donc j'ai enregistré une macro de je déclenche lors du click sur le bouton "PDF" pour lancer l'action
Sub Vider_Presse_Papier()
OpenClipboard 0
EmptyClipboard
CloseClipboard
End Sub
Mais quand je fait ca , j'ai un bug au moment de coller ActiveSheet.Paste.
Je ne comprend pas bien d'ou provient l'erreur, c 'est dommage parceque ca marche plutot pas mal, ca me permet de copier/coller le userform dans une page pour ensuite l'enregistrer sur le PC.
Mais ce soucis de memoire cache viens tout gacher
Je met le code , si vous avez des idées je suis preneur
Merci
Mon code :
Private Sub PDF_CommandButton_Click()
Dim Ws As Worksheet
'On supprime la page "Feuille_copie" ( au cas ou elle existerai ) en lancant la fonction "FeuilleExiste"
Application.DisplayAlerts = False 'On désactive les alertes
If FeuilleExiste(ThisWorkbook, "Feuille_copie") Then
Sheets("Feuille_copie").Delete
End If
Application.DisplayAlerts = True 'On réactive les alertes
'On vide le presse papier, avant de faire la copie, en appelant la macro "Vider_presse_Papier"
Vider_Presse_Papier
'Copie d'écran de la forme active par simulation de la touche
keybd_event vbKeySnapshot, 1, 0&, 0&
DoEvents
'On ajoute une feuille pour coller l'image
Set Ws = Sheets.Add
ActiveSheet.Name = "Feuille_copie"
'On colle la forme active
Sheets("Feuille_copie").Paste
'Mise en page
With Sheets("Feuille_copie").PageSetup
'.RightFooter =
.PrintGridlines = False
.CenterHorizontally = True
.CenterVertically = False
.Orientation = xlPortrait '* Vertical
'.Orientation = xlLandscape '* Horizontal
.PaperSize = xlPaperA4
.Zoom = 70 '* Mettre en remarque si impression ajustée
' * Ajuste l'impression (largeur & hauteur)
'.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
End With
'Lancer la macro "EnregistrerPDF"
Call enregistrerPDF
End Sub