XL 2016 La méthode 'paste' de l'objet 'worksheet' a échoué

eilalab1996

XLDnaute Nouveau
Salut,
J'espère que vous allez bien et en bonne santé.
A chaque fois que je lance le macro un message indiquant que la méthode 'paste' de l'objet 'worksheet' a échoué
Comment je peux améliorer le script svp
Merci

Private Sub CommandButton1_Click()
'Ouvre un PDf et lit les informations
Dim NomPDF As String 'chemin+nom du fichier
Dim NomPdf2 As Object
Dim test As Variant
Dim n As Object

NomPDF = "C:\Users\212814114\Downloads\BV8010 - CB112.pdf" 'Nom du PDF
ActiveWorkbook.FollowHyperlink NomPDF

Application.SendKeys "^a" 'sélectionne la totalité du pdf
Application.SendKeys "^c" 'copie la totalité du pdf


ThisWorkbook.Sheets("Sheet1").Activate
Range("A1").PasteSpecial 'coller l'ensemble de ma sélection




End Sub
 

Pièces jointes

  • BV8010 test.pdf
    48.8 KB · Affichages: 34
  • test.xlsm
    35.7 KB · Affichages: 14

patricktoulon

XLDnaute Barbatruc
re
bonjour
c'est normal
selon le pc et ou son UC occuper le folow va mettre plus ou moins de temp a ouvrir le pdf
et par pitié vos sendkeys faite les par un wscript.shell avec application vous risquez d'envoyer les touches dans l'application et non dans la fenêtre pdf qui s'ouvre
VB:
NomPDF = "C:\Users\212814114\Downloads\BV8010 - CB112.pdf" 'Nom du PDF
ActiveWorkbook.FollowHyperlink NomPDF
' ICI!!!!!! IL TA FAUT UNE GESTION D'ATTENTE du chargement complet du pdf dans l'appinstallée qui s'ouvre '
with createobject("wscript.shell")
.SendKeys "^a" 'sélectionne la totalité du pdf
.SendKeys "^c" 'copie la totalité du pdf
end with
'ICI!!! POUR LES GROS PDF IL FAUT GERER L ATTENTE QUE LE CLIPBOARD AI BOUFFER!!!  LES DONNEES'
WITH ThisWorkbook.Sheets("Sheet1")
.activate
.[A1].select
.Paste
end with
 

fanch55

XLDnaute Barbatruc
Salut à tous,
J'ai horreur des sendkeys qui fonctionnent aléatoirement ... c'est pour cela que je passe par un Power Query .
Peut-être que le fichier Pdf n'est pas du même type que celui fourni, faire les étapes suivantes:
Test.gif
 

patricktoulon

XLDnaute Barbatruc
bonjour fanch55
il fonctionne pas aléatoirement
il faut pas utiliser le membre de application c'est tout
celui de wscript.shell fonctionne tres bien

mais il est bien évident que si la fenêtre pdf n'est pas complètement ouverte(donc pas active) ton sendkeys va taper dans la fenêtre active et je te le donne dans le mille la quelle?.. ben excel
LOL et RE LOL
 

patricktoulon

XLDnaute Barbatruc
bonour @kiki29

j'ai pas voulue les amener dans les api tu le fait ;) :p:p

sinon j'ai retrouvé dans mes vieux trucs
ajouter un userform dans le quel on met un webbrowser
et mettre ce code dans le userform
VB:
Option Explicit
Public destination As Range
Public Function grabb(fichier, destination As Range)
    With PdfGrabber
        Set .destination = destination
       startupposition = 0
       .Left = 0
       .Top = -15
       .Height = 0
        
         .WebBrowser1.Navigate fichier
         .Show 0
    End With

End Function

Private Sub UserForm_Click()

End Sub

Private Sub WebBrowser1_StatusTextChange(ByVal Text As String)
     With CreateObject("wscript.shell")
        .SendKeys ("^a")
        .SendKeys ("^c")
    End With
    Application.Wait TimeValue(Now) + 0.00002
   Me.Hide
   With destination
        .Parent.Activate
        .Select
        .Parent.Paste
    End With
    Unload Me
End Sub

dans un module standard une sub pour tester
  1. adapter le nom du fichier
  2. adater la cellule(1) de destination
VB:
Sub test()
fichier = "G:\vba excel\32 Bit And 64 Bit Api Declarations For Vba Developers - Excel Titan.pdf"
PdfGrabber.grabb fichier, Sheets(1).[A1]
End Sub
 

fanch55

XLDnaute Barbatruc
Salut à tous,

J'ai l'impression qu'on dérive .. :rolleyes:

Le copier/coller avec les sendkeys fonctionne correctement sur mon Pc.
Les data du fichier PDF sont bien collés à la queue leu leu dans la première colonne et mon pavé numérique est désactivé , grrrrr..... ( tout ce qui est sendkey le désactive , ce n'est pas nouveau) :mad:.

Ce que je proposai à @eilalab1996 c'est une autre approche du Pdf vers Excel via le Power Query ..
 

job75

XLDnaute Barbatruc
Bonsoir à tous,

Téléchargez les fichiers joints dans le même dossier (le bureau).

Les macros dans le code de la feuille du fichier Excel :
VB:
Private Sub CommandButton1_Click()
ThisWorkbook.FollowHyperlink ThisWorkbook.Path & "\BV8010 test.pdf"
Application.OnTime Now + 2 / 86400, Me.CodeName & ".Copie"
End Sub

Sub Copie()
CreateObject("wscript.shell").SendKeys "^a^c" 'sélectionne et copie la totalité du pdf
Application.OnTime Now + 2 / 86400, Me.CodeName & ".Colle"
End Sub

Sub Colle()
ThisWorkbook.Sheets("Sheet1").Activate
Range("A1").PasteSpecial 'colle l'ensemble de la sélection
AppActivate "Excel"
End Sub
Toutes les données copiées du fichier PDF se retrouvent dans la cellule A1.

Le tableau Excel des lignes 7 à 27 est rempli au moyen de cette fonction VBA très simple :
VB:
Function Suite$(txt$, ordre%)
On Error Resume Next
Suite = Split(txt)(ordre)
End Function
A+
 

Pièces jointes

  • Copier PDF(1).xlsm
    26.8 KB · Affichages: 3
  • BV8010 test.pdf
    48.8 KB · Affichages: 1

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 910
Membres
101 837
dernier inscrit
Ugo