Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[VBA] importer des données PDF dans Excel via VBA

5,537 views
Skip to first unread message

HD

unread,
Feb 28, 2013, 12:08:53 PM2/28/13
to
Bonjour,

Je voudrais pouvoir importer les données d'un PDF dans Excel via le VBA. Il
existe des API Adobe tel que << AcroRd32.dll >>. Mais comment le piloter ?

Merci d'avance pour votre aide,

@+
HD


MichD

unread,
Feb 28, 2013, 3:01:15 PM2/28/13
to
Bonjour,

À cette adresse, tu as 2 méthodes. Les as-tu essayées?
https://groups.google.com/forum/?fromgroups#!topic/excelvbamacros/hPZsy2QyFGM

Attention : Comme elles utilisent la commande "Sendkeys"
tu dois obligatoirement exécuter ces macros à partir
de l'interface de calcul Alt + F8 et non directement à
partir de la fenêtre VBA.

MichD
---------------------------------------------------------------

HD

unread,
Mar 1, 2013, 5:51:41 AM3/1/13
to
> � cette adresse, tu as 2 m�thodes. Les as-tu essay�es?
> https://groups.google.com/forum/?fromgroups#!topic/excelvbamacros/hPZsy2QyFGM
Je viens de les essayer. Cela fonctionne assez bien. Par contre, si l'on a
un PDF (texte) avec un tableau les donn�es r�cup�r�es dans Excel
apparaissent dans une cellule sans s�paration des colonnes... et il n'y a
pas de s�parateur visible entre les donn�es.

@+
HD


HD

unread,
Mar 1, 2013, 5:56:31 AM3/1/13
to
> Je viens de les essayer. Cela fonctionne assez bien. Par contre, si l'on a
> un PDF (texte) avec un tableau les données récupérées dans Excel
> apparaissent dans une cellule sans séparation des colonnes... et il n'y a
> pas de séparateur visible entre les données.
Les colonnes sont séparées par le caractère espace (32) qui apparait
également dans le texte là où il n'y a pas de séparation de colonne mais un
espace normal dans du texte...

@+
HD


MichD

unread,
Mar 1, 2013, 6:37:53 AM3/1/13
to
La commande "Convertir" du menu "Données" du menu d'Excel
peut répartir facilement le texte en plusieurs colonnes...

Selon la disposition des données dans ta feuille de calcul, il
est possible de bâtir une macro qui va se charger de la disposition
dans Excel.

MichD
---------------------------------------------------------------

HD

unread,
Mar 1, 2013, 10:27:55 AM3/1/13
to
> La commande "Convertir" du menu "Données" du menu d'Excel
> peut répartir facilement le texte en plusieurs colonnes...
> Selon la disposition des données dans ta feuille de calcul, il
> est possible de bâtir une macro qui va se charger de la disposition
> dans Excel.
Dans ce cas là, la commande "Convertir" ne solutionne pas le problème
puisque lors d'un copier/coller d'un PDF vers Excel le séparateur de colonne
est le caractère espace or le souci est que dans une colonne l'on peut avoir
du texte avec des espaces d'où problèmes d'où problème car l'on se retrouve
avec des colonnes décalées par rapport aux données.

@+
HD


MichD

unread,
Mar 1, 2013, 10:46:01 AM3/1/13
to
Difficile de proposer quelque chose sans avoir vu
un bon échantillon représentatif de la disposition
des données après leur importation dans une feuille
de calcul. Tu peux utiliser "cjoint.com" pour publier
un classeur à cet effet. Tu nous retournes l'adresse ici.


MichD
---------------------------------------------------------------

isabelle

unread,
Mar 3, 2013, 10:07:20 PM3/3/13
to
bonjour HD,

personnellement j'ai abandonn� l'id�e d'utiliser vba pour faire ce travail,
j'utilise Cogniview qui n'est pas trop cher et qui est tr�s performant.

isabelle

Le 2013-03-01 10:27, HD a �crit :
>> La commande "Convertir" du menu "Donn�es" du menu d'Excel
>> peut r�partir facilement le texte en plusieurs colonnes...
>> Selon la disposition des donn�es dans ta feuille de calcul, il
>> est possible de b�tir une macro qui va se charger de la disposition
>> dans Excel.
> Dans ce cas l�, la commande "Convertir" ne solutionne pas le probl�me
> puisque lors d'un copier/coller d'un PDF vers Excel le s�parateur de colonne
> est le caract�re espace or le souci est que dans une colonne l'on peut avoir
> du texte avec des espaces d'o� probl�mes d'o� probl�me car l'on se retrouve
> avec des colonnes d�cal�es par rapport aux donn�es.
>
> @+
> HD
>
>

HD

unread,
Mar 4, 2013, 2:53:26 AM3/4/13
to
> Difficile de proposer quelque chose sans avoir vu
> un bon échantillon représentatif de la disposition
> des données après leur importation dans une feuille
> de calcul. Tu peux utiliser "cjoint.com" pour publier
> un classeur à cet effet. Tu nous retournes l'adresse ici.

Voilà un exemple de tableau sur PDF qui pourrait poser problème. Ce n'est
pas l'un de mes tableaux mais j'ai testé la récupération est le problème est
le même : http://elveapharma.com/indices-glycemiques.pdf

@+
HD


HD

unread,
Mar 4, 2013, 2:55:28 AM3/4/13
to
> personnellement j'ai abandonné l'idée d'utiliser vba pour faire ce
> travail,
> j'utilise Cogniview qui n'est pas trop cher et qui est très performant.
Arfff... je crains également que cela ne soit pas faisable en VBA. Ce n'est
pas que VBA ne peut pas le faire mais plutôt qu'il nous manque des clés pour
comprendre comment le faire... et à mon avis ça doit passer par des API de
chez Adobe.

@+
HD


MichD

unread,
Mar 5, 2013, 7:01:04 AM3/5/13
to
Bonjour,

| Arfff... je crains également que cela ne soit pas faisable en VBA

Je crains comme tu l'énonces qu'il ne soit pas possible de créer une
macro qui s'applique à plusieurs opérations de ce type. Le tableau
généré dans Excel n'a pas une structure standard facilement
traitable pour une seule macro!


MichD
---------------------------------------------------------------

HD

unread,
Mar 5, 2013, 7:51:08 AM3/5/13
to
Il y'a pourtant des logiciels qui le permettent sur le net. On leur balance
n'importe quel PDF texte avec un tableau dedans et l'on nous retourne un
classeur xls avec toutes les donn�es dans un tableau excel. Mais je pense
qu'ils doivent passer par des API de chez Adobe. Ces API sont elles
exploitables... gratuitement ? Y'a-t-il un �quivalent dans le monde du libre
?

@+
HD


MichD

unread,
Mar 5, 2013, 10:06:07 AM3/5/13
to
OUI, tu as raison, tu as le programme acrobat -adobe
tu peux essayer ceci pour t'amuser.

Après, il s'agit de jouer avec les objets de la bibliothèque...
moi, je n'ai pas vraiment le temps d'approfondir le sujet, et toi ?


'--------------------------------------------------------------------
Sub OpenPDFPageView()

'By Christos Samaras
'http://www.myengineeringworld.net

'In order to use the macro you must enable the Acrobat library from VBA
editor:
'Go to Tools -> References -> Adobe Acrobat xx.0 Type Library, where xx
depends
'on your Acrobat Professional version (i.e. 9.0 or 10.0) you have
installed to your PC.

'Alternatively you can find it Tools -> References -> Browse and check
for the path
'C:\Program Files\Adobe\Acrobat xx.0\Acrobat\acrobat.tlb
'where xx is your Acrobat version (i.e. 9.0 or 10.0 etc.).

Dim PDFApp As AcroApp
Dim PDFDoc As AcroAVDoc
Dim PDFPageView As AcroAVPageView
Dim PDFPath As String
Dim DisplayPage As Integer

'Change this to your own complete PDF path
'Full path example
'PDFPath = "C:\Program Files\Autodesk\ACADM
2010\Setup\en-US\SetupRes\Docs\Acad_Mech_2010_UserGuide.pdf"
'For Word
'PDFPath = ThisDocument.Path & "\" & "PDF Sample.pdf"
'For Power Point
'PDFPath = ActivePresentation.Path & "\" & "PDF Sample.pdf"
'For Excel
PDFPath = ThisWorkbook.Path & "\" & "PDF Sample.pdf"

'Set the page you want to be displayed
DisplayPage = 3

'Initialize Acrobat by creating App object
Set PDFApp = CreateObject("AcroExch.App")

'Set AVDoc object
Set PDFDoc = CreateObject("AcroExch.AVDoc")

'Open the PDF
If PDFDoc.Open(PDFPath, "") = True Then
PDFDoc.BringToFront

'Maximize the document
Call PDFDoc.Maximize(True)

Set PDFPageView = PDFDoc.GetAVPageView()

'Go to the desired page
'The first page is 0
Call PDFPageView.GoTo(DisplayPage - 1)

'-------------
'ZOOM options
'-------------
'0 = AVZoomNoVary
'1 = AVZoomFitPage
'2 = AVZoomFitWidth
'3 = AVZoomFitHeight
'4 = AVZoomFitVisibleWidth
'5 = AVZoomPreferred

'Set the page view of the pdf
Call PDFPageView.ZoomTo(2, 50)

End If

Set PDFApp = Nothing
Set PDFDoc = Nothing

On Error Resume Next

'Show the adobe application
PDFApp.Show

'Set the focus to adobe acrobat pro
AppActivate "Adobe Acrobat Pro"

End Sub
'--------------------------------------------------------------------

MichD
---------------------------------------------------------------

fbzh44

unread,
Jun 12, 2013, 9:14:59 AM6/12/13
to
Le vendredi 01 Mars 2013 à 16:27 par HD :
chez moi quand je colle un tableau PDF dans excel, chaque ligne est dans une
seule cellule, sans séparer les colonnes.
si le tableau n'est pas trop grand avec un peu de patience, on peut dans chaque
cellule insérer un caractère qui n'existe pas dans les données (per exemple
"&") à chauqe endroit où on veut un changement de colonne (2 fois si on veut
laisser une colonne vide) .
ensuite la fonction Données => Convertir => Délimité par caractère "Autre"
(dans l'exemple "&") permet de séparer les colonnes.

Ce serait plus facile si on avait un moyen de délimiter par espace seulement
s'il est à côté d'un chiffre, mais je n'ai pas trouvé...

HD

unread,
Jun 14, 2013, 6:40:31 AM6/14/13
to
> chez moi quand je colle un tableau PDF dans excel, chaque ligne est dans
> une
> seule cellule, sans séparer les colonnes.
> si le tableau n'est pas trop grand avec un peu de patience, on peut dans
> chaque
> cellule insérer un caractère qui n'existe pas dans les données (per
> exemple
> "&") à chauqe endroit où on veut un changement de colonne (2 fois si on
> veut
> laisser une colonne vide) .
Avec un petit tableau et un peu de patience c'est faisable effectivement...

Mais si l'on a un tableau de 20000 lignes comportant du texte et des nombres
avec espaces où même parmi les nombres l'on a l'espace en séparateur de
millier cela devient... ingérable.

> Ce serait plus facile si on avait un moyen de délimiter par espace
> seulement s'il est à côté d'un chiffre, mais je n'ai pas trouvé...
Il serait bien même de pouvoir choisir soit même le séparateur de colonne (;
ou tabulation ou autres)... mais je me demande si cette difficulté n'est pas
voulu par Adobe... qui réserverait ces possibilités de récupération de
tableau PDF dans Excel pour un logiciel payant... :-/

Après... je ne désespère pas que l'on trouve l'astuce un jour.

Malheureusement, en attendant j'utilise l'OCR d'un scanner... Mais le souci
des OCR est que leur qualité est variable d'un logiciel à l'autre et que
quoique l'on fasse ou dise l'OCR n'est jamais fiable à 100%...

@+
HD


0 new messages