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

XL 2016 VBA - Récupérer le texte d'un fichier PDF

Dudu2

XLDnaute Barbatruc
Bonjour,

Y a-t-il un moyen de chercher et récupérer du texte directement dans un PDF sans avoir à l'ouvrir / tout sélectionner / copier dans le clipboard texte ?

Merci pour toute information.

Edit: Titre modifié pour mieux refléter la solution de cette longue discussion.
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
le sleep c'est pour reposer vba c'est pas lui qui gère les attentes dans mon model
c'est juste pour éviter de taper les touches dans le vide les premières fois
c'est le do/loop clipboard qui dirige tout dans le quel je mitraille la fenêtre des touches
quand il est plein il s'arrêtte c'est tout c'est ça le vrai signal de sortie

en ce qui concerne ta methode findwindow tu sleep dans la boucle hWnd donc tu multiplie les attente a chaque fois

et il faut encore gérer le clipboard pres les touche CTRL+A+C c'est a dire ajoute une tempo le temps que le clipboard est le temps de digérer les datas pour pouvoir taper la touche F4

et même là encore on est pas certains

tandis qu'avec ma version si le clip est plein c'est qu'il a copiér puisque je le vide avant
et plus besoins de savoir qui quoi fenêtre pas fenêtre F4 et puis c'est tout


et oui le problème du chrome et la touche Tab va être un soucis de Taille
chez moi quand chrome a un seul onglet(le pdf) la touche Tab ferme chrome
quand il y a plusieurs onglets d'ouverts ca passe a l'onglet suivant ou precedent si le pdf c'est le 2d onglet et qu'uil n'y a que deux onglets
 

Dudu2

XLDnaute Barbatruc
En fait, le mieux serait de faire un mix des 2 solutions pour être (plus) sûr.
Un FindWindow pour attendre le browser.
Un test de Clipboard en boucle limitée à 2 ou 3 essais ensuite pour récupérer le copy.
Je code ça.
 

Dudu2

XLDnaute Barbatruc
Bon, ça se corse.
Par recherche en nom partiel je trouve la Window Firefox (lettres capitalisées, accents retirés)
Nom PDF: "Segment 008 mailing toutes communes.pdf"
Nom Window: "SEGMENT 008 DE MAILING TOUTES COMMUNES.PDF — MOZILLA FIREFOX"

Je prends son nom complet et la recherche avec FindWindow et il ne la trouve pas !
Dump en hexa et tout le tintouin. C'est le bon nom. Incompréhensible !

Je vais devoir ré-écrire un FindWindow sur la base du code de la recherche en nom partiel.
Je verrai ça demain, là je sature.
 

patricktoulon

XLDnaute Barbatruc
chez moi ca ne fonctionne pas
et parfois le F4 est appliqué sur la fenêtre excel

pour le problème de majuscule ou min modifie ma fonction
VB:
Private Declare PtrSafe Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Private Declare PtrSafe Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal HWND As LongPtr, ByVal lpString As String, ByVal cch As Long) As Long
Private Declare PtrSafe Function GetWindow Lib "user32" (ByVal HWND As LongPtr, ByVal wCmd As Long) As Long


Function FindWindowByPartTitle(Optional partTittle As String)
    Dim sStr As String, HWND As LongPtr
    sStr = Space$(150)
   HWND = FindWindow(vbNullString, vbNullString)
      Do While HWND <> 0
        GetWindowText HWND, sStr, 300
           If Lcase()"x" & Trim(sStr) & "x") Like "*" & Lcase(partTittle) & "*" Then
            FindWindowByPartTitle = HWND
            Exit Do
        End If
        HWND = GetWindow(HWND, 2)
    Loop
End Function
terminé
 

Dudu2

XLDnaute Barbatruc
Finalement je m'y suis remis juste pour faire ce remplacement de FindWindow() par un code qui s'appelle chez moi FindWindowByPartialName() qui me rend les Handles que FindWindow() ne veut pas me retourner.

Tout ça à cause de Firefox qui fait des trucs pas orthodoxes avec les titres de ses fenêtres.
Ça rallonge le code hélas, mais nécessaire pour inclure ce navigateur... qui ne l'est pas vraiment si on a Chrome.

Maintenant, si ça ne marche pas chez toi, je ne peux plus rien y faire. Tu devras débuguer.
 

Pièces jointes

  • Classeur1.xlsm
    34.7 KB · Affichages: 3

patricktoulon

XLDnaute Barbatruc
toujours pareil ca ouvre
ctrl + a + c
ca ferme
et ca applique le F4 sur excel et donc le fichier me demande d'enregistrer les modif
non c'est bon te casse pas la tête j'ai la mienne qui fonctionne très bien et elle est de loin plus sur
je l'ai testé sur le lonovo du voisin avec W11 et 365 elle fonctionne

resultat chez moi
 

Dudu2

XLDnaute Barbatruc
Bonjour,
Je vois pas comment un Ctrl C peut fermer le navigateur. C'est strictement impossible.
Bon de toutes façons j'ai la mienne qui fonctionne chez moi et la tienne qui ne fonctionne pas.
On a donc chacun la sienne.
 

Dudu2

XLDnaute Barbatruc
Oui, c'est le F4. Mais comment peut-il être envoyé sur Excel alors que la fenêtre de navigateur est active ?
Ou alors la fenêtre du navigateur n'est pas (encore) active ? Mais alors quand elle est devenue active qui l'a fermée puisque le F4 est passé sur Excel ?

Purée ! je pensais pas tomber sur des problèmes comme ça ! Ça paraissait tellement simple.
 

Dudu2

XLDnaute Barbatruc
Déjà, chez moi, sur Chrome, si j'envoie pas le TAB après le Ctrl A, je tombe dans ce cas systématiquement.
Chrome se ferme, la cellule Excel est en copie (Ctrl C) et Excel se ferme (Alt F4). Ça n'a aucun sens.
 

Dudu2

XLDnaute Barbatruc
Avec Firefox il y a ce problème de nom de fenêtres.
Avec Chrome il y a cet problème anormal de Ctrl C qui ne fonctionne pas après Ctrl A sauf à faire "quelque chose" => j'ai remplacé l'envoi de TAB par un Clic souris dans la fenêtre Chrome après son affichage.

Et de toutes façons, FindWindow ou pas, il y a la question d'envoi des touches qui doit se faire quand le fenêtre est prête à les recevoir. Et ça on ne le sait pas vraiment. Le FindWindow apporte un début de réponse mais n'est pas suffisant. Je n'ai rien trouvé pour le compléter. C'est là qu'il faudrait faire des recherches.

J'ai revu le code pour éliminer Firefox, ça sert à rien de gérer 2 navigateurs et ça rallonge sensiblement le code (chez moi à cause des recherches de fenêtres).

Ajouté aussi un DoEvents après les envois de touches et remplacé la temporisation par des Sleep.
 

Pièces jointes

  • Classeur1.xlsm
    36 KB · Affichages: 1

Discussions similaires

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