Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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
Bonjour,
Merci à vous deux.
J'avais déjà regardé ces discussions, mais cela ne me permet pas de comprendre ce qui coince dans le code que j'ai mis plus haut...
Merci quand même!
Bien cordialement,
ML
 

job75

XLDnaute Barbatruc
Sachez que les actions commandées pas SendKeys s'effectuent après l'exécution complète de la macro.

Sachez aussi que Application.SendKeys désactive le pavé numérique.

Bonsoir kiki29.
 

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
heu.... jokker!
je suis plus....
je suis largement sorti de ma zone de confort la....
Trêve de plaisanterie, j'arrive pas à ronger cet os et ca me bloque sur ce que je voudrais faire ensuite... grrr!
 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…