XL 2010 VBA Récupérer du texte d'un pdf

micheldu52

XLDnaute Occasionnel
Bonjour le FoRUM?

J'ai besoin d'aide...

J'essaye d'écrire une macro qui récupère le contenu texte d'une série de pdf (ici un seul) et devrait (c'est la mon problème...) le copier dans un onglet excel.
J'arrive bien à faire le "tout sélectionner" puis "copier" mais pas le "coller" (les valeurs en texte)

J'ai essayé trois façons (cf ci dessous) mais aucune ne me renvoie le texte sélectionné dans le pdf. Je précise que "à la main" le copié/collé fonctionne, mais je dois automatiser....

Merci pour vos lumiéres....

Très cordialement,

Michel



Sub OuvrirmonPDF() 'destiner à Ouvrir mon PDf et lire les informations textes puis les copier dans Excel en texte
Dim NomduPdf As String 'chemin+nom du fichier
On Error GoTo fin
NomduPdf = "C:\Users\DELL\Documents\PERSO\excel\Nouveau dossier (4)\testtest.pdf" 'Nom du PDF

ActiveWorkbook.FollowHyperlink NomduPdf
Application.Wait (Now + TimeValue("0:00:05")) 'je suis pas sur qu'il y en ait beson, je verrais après...

Application.SendKeys ("^a") 'sélectionne la totalité de mon pdf
Application.SendKeys ("^c") 'copie la totalité du pdf
ThisWorkbook.Sheets("Feuil2").Activate 'active la feuille 2

Range("A1").Application.SendKeys ("^v") ' devrait coller le contenu copié précédement en A1 et suivante <<<CA NE MARCHE PAS>>>
Range("g1").PasteSpecial 'essai 2: coller l'ensemble de ma sélection CA NE MARCHE PAS NON PLUS
Application.SendKeys ("^v")
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False 'ET CA NON PLUS CA NE MARCHE PAS

fin: End
End Sub
 

micheldu52

XLDnaute Occasionnel
Rebonsoir,
Ceci explique cela en effet, je ne peux donc pas les enchainer car, si je comprends bien, seule la dernière s'exécute (en l'occurrence le coller de la valeur saisie -avant la macro- par un copier) ce que me confirme d'ailleurs le "pas à pas" (je l'avais repéré mais ne le comprenais pas)
Mais du coup, j'ai encore moins la solution et je ne l'ai pas trouvée en parcourant les post et les discussions...
Je sèche (pourtant dehors il tombe des cordes!)...
balle rebondissante pour moi (pour l'instant en tout cas...)
 

kiki29

XLDnaute Barbatruc
Re, voir avec "WScript.Shell" en adaptant ce qui suit à ton contexte
VB:
Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Const Tempo As Long = 500

'           sAcro pour chemin d'Acrobat Reader
            Shell sAcro & " " & sFichier, vbNormalFocus

            With CreateObject("WScript.Shell")
                .SendKeys "^a^c", True
                Sleep Tempo
                .SendKeys "^q", True
                Sleep 2 * Tempo
            End With
         
            DoEvents

            With ShExtraction
                .Activate
                .Range("A1").Select
                .Paste
            End With
 
Dernière édition:

micheldu52

XLDnaute Occasionnel
Merci pour ton aide!
A priori il y a une incompatibilité (cf capture ecran)
je cherche.... mais un peu dans le brouillard pour être honnête!

1621196826569.png
 

kiki29

XLDnaute Barbatruc
Re, au choix
VB:
#If VBA7 Then
    Private Declare PtrSafe Sub Sleep Lib "kernel32" ( ByVal dwMilliseconds As Long)
#Else
    Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If

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

VB:
Const Tempo As Long = 500

Private Function Delai(ByVal ms As Long)
    Delai = Timer + ms / 1000
    While Timer < Delai: DoEvents: Wend
End Function

Delai Tempo
 
Dernière édition:

Discussions similaires