IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Mise à jour copier-coller PDF dans XLS


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2011
    Messages : 26
    Par défaut Mise à jour copier-coller PDF dans XLS
    Bonjour, je ne suis pas un grand habitué des forums, alors à défaut de m'expliquer si je fais bien de poster ça ainsi, je vous pris de pardonner cet écrit s'il vous semble un peu "olé olé"

    Ouvrir un PDF, faire un Ctrl A, Ctrl C et mettre le contenu dans la cellule A1 est exactement ce que je veux faire et le post que j'ai vu me convient très bien.
    Le voici :
    https://www.developpez.net/forums/d4...r/#post6969168

    Mais même s'il ouvre bien l'application AcroRd.exe, il n'ouvre pas le *.PDF que j'ai mis dans le même répertoire.
    Ensuite, la copie et le collage qu'il fait est celle de mes lignes de commande du VBA.

    De mon coté voici où j'en étais quand j'ai entamé mes recherches pour faire le :
    Aller dans mon fichier pdf
    Le Ctrl A
    Ainsi de suite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Dim LieuSource As String       'Chemin où se trouve le PDF
        Dim MonAppli As Object
     
        Set MonAppli = CreateObject("Shell.Application")
        MonPDF.Open (LieuSource)
     
        Application.Wait Time + TimeSerial(0, 0, 3)
        SendKeys "%{TAB}"
        SendKeys "(^+){HOME}"
    Bon, j'ouvre bien mon PDF, mais je n'arrive pas à aller dedans et sélectionner (Ctrl A) son contenu alors de là à faire mon Ctrl V, oublie moi !!!

    Mon système d'exploitation est windows famille
    Mon Excel est la version 2007.

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, eh bien ici il fonctionne correctement ... à la vue des Sendkeys utilisés tu n'es pas près d'y arriver

    Voir ci-dessous les références sur le sujet :
    Acrobat : récupérer le texte d'un fichier PDF dans une feuille Excel
    Acrobat Reader : Copier/Coller le texte d'un PDF dans une feuille Excel via des SendKeys
    Acrobat Reader : Copier/Coller le texte des PDFs d'un dossier ( recherche récursive ou non ) dans une feuille Excel

    XPDF :
    Alternative à Acrobat : Extraction du Texte d'une liste de PDF ( P-Papier )(2)
    Alternative à Acrobat : Extraction du Texte d'une liste de PDF (2)

    Et les Pdf2Xls téléchargeables via la Liste des Contributions.
    Ces 2 fichiers m'ont permis de traiter 6700 fichiers pdf ( 1.7 Go au total, dans 3 présentations différentes ) d'une base Kompass pour en extraire autour de 638 000 entreprises avec uniquement les infos utiles. Le travail éventuel de formatage des données copiées restera à ta charge et ce n'est pas une sinécure.

    Voir ici : Version 3.04 des outils XPDF

  3. #3
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Re, une remarque : les Sendkeys correspondent aux raccourcis clavier des menus et dépendent de la langue d'installation d'Acrobat ou du Reader, ils sont donc à adapter au contexte. C'est pour cela que la solution XPDF est préférable et à l'avantage, pour un grand nombre de fichiers pdf à traiter, d'être très nettement plus véloce.

  4. #4
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2011
    Messages : 26
    Par défaut
    Merci Kiki29
    Je suis attiré par la proposition que je cite ici :
    Seulement, je crois que tu ne sais pas trop qui je suis, et cela devrais t'aider dans les explications que tu m'indiques.
    Je suis un jeune retraité et je "m'autodidacte" au VBA, juste pour le fun sur un désir personnel : récupérer mes relevés bancaires afin de faire des traitements à l'aide d'XLS.
    Et, ...... j'ai réussi. Mon truc marche très bien et j'en suis content d'autant plus que je n'avais jamais touché au VBA avant.
    J'arrive même à ouvrir le PDF avec le VBA. Le seul truc sur lequel je butte est cette recopie (Aller dans le PDF, Ctrl A, Ctrl C et Ctrl V dans la cellule A1 qui m'affiche toutes les pages du PDF dans la colonne A).
    Donc, pour revenir à ta proposition qui m’intéresse, j'ai d'abord galéré pour trouver comment coché Microsoft Forms 2.0 Object Library --> j'ai trouvé.
    Puis j'ai un problème avec la variable ShTest qui n'est pas déclarer, là je n'ai pas trouvé.
    J'ai aussi un autre problème avec (je crois) AcroExch.PDDoc et AcroExCh.HiliteList : Un composant ActiveX ne peut pas créer d'objet.
    Alors, j'essaye de comprendre ce que c'est que la commande CreateObjet mais là, pour moi, ça devient très très dur alors avant que je m'occupe de ce fainéant d'ActiveX, il va ce passer pas mal de temps.
    Alors, peut-être toi ou un foromeux peut-être peut on me booster entre rajoutant des commentaires par exemple. Alors ainsi, je peux mieux bidouller, essayer et modifier, et c'est comme ça que j'arrive à comprendre ce qu'il se passe et "vivre" mon œuvre (qui sera aussi un peu la tienne).
    Je peux comprendre que cela puisse barber, mais ce n'est pas grave, le seul truc : dit le moi. Ou dîtes le moi.
    Merci d'avance - Marc

  5. #5
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut, pour ShTest il s'agit du CodeName
    pour "Un composant ActiveX ne peut pas créer d'objet" cela veut dire qu'il te faut Acrobat ( pas le Reader )

    Bref va voir XPDF et ce fichier

    Autodidacte : comme beaucoup d'entre nous, et moi également depuis longtemps sur VBA, VB6, Delphi etc...

  6. #6
    Membre averti
    Homme Profil pro
    Retraité
    Inscrit en
    Février 2011
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Février 2011
    Messages : 26
    Par défaut
    Philippe, je te remercie pour cette réponse.

    Tout d'abord, je suis content d'avoir appris l'utilisation du "codename", c'est bien pratique si je veux renommer mes feuilles sans avoir à retourner dans le VBA.
    Mais il n'est pas dit dans ton texte comment tu as fais pour nommer une feuille "Shtest", et ce n'est pas grave, je trouverai bien ça un jour.

    Pour créer (rarement) des PDF, j'utilise mon scanner ou j'imprime avec PDF Creator, ce qui fait que je n'ai pas envie d’acquérir Acrobat (sans le reader).
    Ce qui fait que j'abandonne cette idée. Sauf si tu me convaincs du contraire, parce que j'aimais bien cette solution. Et puis les PDF que je veux traiter viennent de ma banque.
    Je lis mes PDF avec Adobe Acrobat Reader DC version 2018.

    Je me tourne donc vers la solution "2nde Version avec les Sendeys" car la 1er me cause effectivement des ennuis avec NumLock et compagnie.
    Juste, dis moi ce que tu entends par : "Placer dans un module de Classe baptisé clsKeyBoard". Est-ce que je le crée à partir de VBAProjet - clic droit - insertion - module de classe, mais alors comment fait on pour qu'il s'appelle "clsKeyBoard" ? Ou alors, je le trouve ou le crée autrement ?
    Quant à ce que tu appelles "un module Standard" c'est un module tous ce qu'il y a de banal n'est ce pas ?

    En tout cas, je remarque que je tombe souvent sur toi quand je fais des recherches sur internet, félicitations !

    Marc

  7. #7
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Re, c'est pour cela que je te donnais un lien vers un fichier à télécharger en relation avec XPDF, plus véloce qu'Acrobat et gratuit, ce fichier est à décompresser avec 7z. Et surtout plus de Sendkeys et ses problèmes récurrents.
    L'exe autonome d'XPDF pdftotext.exe est inclus avec l'utilitaire Excel Pdf2Txt_Clipboard.xls dans ce fichier compressé.
    Son chemin est lié via :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sChemin = ThisWorkbook.Path & "\" & "pdftotext.exe"
    dans la procédure PDF2Clipboard(ByVal sFichier) du module mPDF.

    Pour le CodeName il suffit de regarder la copie d'écran fournie par Pierre pour ShDonnees dans son exemple. Le CodeName évite effectivement de retoucher au code VBA même si le nom d'onglet est changé ou l'ordre de la feuille modifié.
    Images attachées Images attachées  

Discussions similaires

  1. [XL-2010] Copier-coller ligne dans fichiers .xls multiples
    Par Steppingstone dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/12/2013, 15h13
  2. mise à jour d'un champ dans un formulaire
    Par DiverSIG dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 31/03/2006, 08h10
  3. mise à jour d'un champ dans un formulaire
    Par DiverSIG dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 30/03/2006, 19h42
  4. mise à jour de champ monétaire dans un dbgrid
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 1
    Dernier message: 30/08/2005, 11h49
  5. Réponses: 2
    Dernier message: 12/02/2003, 15h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo