problème de transfer de userform vers PDF (résolu)

pasquetp

XLDnaute Occasionnel
Bonjour a tous,

je suis parvenu a transferer un userform vers un pdf et a lenvoyer par outlook

il y a malgre tout un bug qui arrive de temps a autre (curieux)

il m'indique l'erreur: la méthode paste a échoué et me met en jaune (voir code ci dessous)

quel'qun aurait il une idée?

merci a tous

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Const VK_SNAPSHOT = 44
Const VK_LMENU = 164
Const KEYEVENTF_KEYUP = 2
Const KEYEVENTF_EXTENDEDKEY = 1





Private Sub Image1_Click()
Dim pdfName As String
Dim ol As New Outlook.Application
Dim olmail As MailItem
Dim CurrFile As String
Application.ScreenUpdating = False '...............................

keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY, 0
keybd_event VK_SNAPSHOT, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0
keybd_event VK_LMENU, 0, KEYEVENTF_EXTENDEDKEY + KEYEVENTF_KEYUP, 0

DoEvents

ThisWorkbook.Worksheets.Add After:=Worksheets(Worksheets.Count)
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.708661417322835)
.RightMargin = Application.InchesToPoints(0.708661417322835)
.TopMargin = Application.InchesToPoints(0.748031496062992)
.BottomMargin = Application.InchesToPoints(0.748031496062992)
.HeaderMargin = Application.InchesToPoints(0.31496062992126)
.FooterMargin = Application.InchesToPoints(0.31496062992126)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlPortrait
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 1
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""

End With

ActiveSheet.Paste
pdfName = ActiveWorkbook.Path & "\Mon_Fichier.pdf"

ActiveSheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=pdfName, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=False, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True

Application.DisplayAlerts = False '.............................
Worksheets(Worksheets.Count).delete
'Application.SendKeys "{ENTER}"
Unload Me
 
Dernière édition:

pasquetp

XLDnaute Occasionnel
Re : problème de transfer de userform vers PDF

je vous mets la pièce jointe

attention j'ai retiré l'adresse email

Un grand merci a tous pour votre aide précieuse

Pierre
 

Pièces jointes

  • Classeur1.xlsm
    73.9 KB · Affichages: 24
  • Classeur1.xlsm
    73.9 KB · Affichages: 28
  • Classeur1.xlsm
    73.9 KB · Affichages: 30

kiki29

XLDnaute Barbatruc
Re : problème de transfer de userform vers PDF

Salut, ajouter un DoEvents ou un Sleep à l'endroit idoine. voir ici et dans ce dernier cas ajouter cette déclaration :
Code:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
 

pasquetp

XLDnaute Occasionnel
Re : problème de transfer de userform vers PDF

Cher kiki29,

Je ne peux que vous dire MERCI puissance 10.

Ca marche nikel avec un sleep 5000

je ne vois plus l'erreur

Merci de votre réponse efficace et également très rapide que j'apprécie bcp

Excellente journée à vous

Pierre
 

kiki29

XLDnaute Barbatruc
Re : problème de transfer de userform vers PDF

Salut, j'avais laissé ce cas extrême de 5000 c'était pour la prise de contrôle à distance d'un pc via TeamViewer, par la suite la personne avait réduit cette valeur. Tu devrais pouvoir le faire également.
 

Statistiques des forums

Discussions
315 134
Messages
2 116 610
Membres
112 810
dernier inscrit
raphounet