Problème de copier/coller - memoire cache

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

Bonjour ,

Je me sens un peu seul pour le coup

Je ne trouve toujours pas de solution.

Je me suis aperçue que je collais toujours avec un temps de retard , par exemple je fait un 1er TEST qui me colle un image d'une "lampe" , puis TEST2 ca me colle l'image du TEST1, puis TEST3 me colle l'image du TEST2 ....

Si vous pouviez au moins me mettre sur une piste ?

Merci

Et si tu ajoutes :

Application.Wait(Now() + TimeValue("0:00:01"))

entre 2 photos ?

Super !!!

Ca a l'air de fonctionner !

Merci

Il faut laisser le temps à ton PC de se retourner ...

Ouais mais je n'y avais pas pensé !

Merci encore !

Rechercher des sujets similaires à "probleme copier coller memoire cache"