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 :

Recherche Mot ds un PDF


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut Recherche Mot ds un PDF
    Bonjour,

    J'utilise un code de KIKI29, mais ça bloque par un message :
    Erreur d'exécution "Cette interface n'est pas prise en charge"
    le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    Option Explicit
     
    Sub SelFichier_Acrobat()
    Dim Fichier As Variant
    Dim sMot As String
     
        ChDir ThisWorkbook.Path
     
        ' Mot à rechercher
        sMot = "Système de refroidissement"
     
        Fichier = Application.GetOpenFilename("Fichier PDF (*.pdf), *.pdf")
        If Fichier <> False Then AcrobatFindText Fichier, sMot
    End Sub
     
    Private Sub AcrobatFindText(ByVal sFichier As String, ByVal sRch As String)
    Dim AcroApp As Object
    Dim AvDoc As Object
    Dim iTrouvé As Integer
     
        Set AcroApp = CreateObject("AcroExch.App")
        AcroApp.Hide
     
        Set AvDoc = CreateObject("AcroExch.AVDoc")
        Application.StatusBar = ""
     
        If AvDoc.Open(sFichier, "") Then
            If Len(sRch) > 0 Then
                '   Parametres FindText
                '       StringToSearchFor ,
                '       caseSensitive (1 Or 0),
                '       WholeWords(1 Or 0),
                '       ResetSearchToBeginOfDocument (1 Or 0)
     
                '   Renvoie -1 si Trouvé, 0 autrement
     
                iTrouvé = AvDoc.FindText(sRch, True, True, True)
                If iTrouvé = True Then
                    Application.StatusBar = sRch & " : Trouvé"
                    AcroApp.Show
                    AvDoc.BringToFront
                Else
                    AvDoc.Close (1)
                    Application.StatusBar = sRch & " : Introuvable"
                End If
            End If
        End If
     
        Set AvDoc = Nothing
        Set AcroApp = Nothing
    End Sub
    j'utilise Acrobat reader DC version 2022.001.20169 64 bits
    le problème est surement là??

  2. #2
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    1 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 1 035
    Par défaut
    Bonjour,
    En effet c'est sûrement un problème de version de pdf Creator
    KIKI29 signale dans cette discussion que ces fonctions marchent avec la version antérieure : pdfcreator-1-7-3

    Cordialement.

  3. #3
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 246
    Par défaut
    Hello,
    Citation Envoyé par laurent_ott Voir le message
    Bonjour,
    En effet c'est sûrement un problème de version de pdf Creator
    jijie cherche à utiliser acrobat pdf reader pas pdf Creator. Acrobat Pdf Reader ne permet pas d'utiliser les objets AcroExch

    Ami calmant, J.P

  4. #4
    Rédacteur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Août 2013
    Messages
    1 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Août 2013
    Messages : 1 035
    Par défaut
    Bonjour,
    Par curiosité j'ai regardé comment faire pour trouver un texte dans un fichier PDF.
    J'utilise PDF Creator Pro.

    Plus d'informations sur ce site : https://opensource.adobe.com/dc-acro...2FFindText.htm

    Qui donne aussi d'autres ressources pour PDF Creator Pro.

    Voici un exemple vite fait en mettant les arguments en dur dans le code, juste pour tester.

    Code VBA : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    '------------------------------------------------------------------------------------------------------
    Sub Test_Recherche_Un_Texte_Dans_PDF()
    '------------------------------------------------------------------------------------------------------
    ' https://opensource.adobe.com/dc-acrobat-sdk-docs/acrobatsdk/html2015/index.html#t=Acro12_MasterBook%2FIAC_API_OLE_Objects%2FFindText.htm
    '------------------------------------------------------------------------------------------------------
    Dim AcroAVDoc As Object
    Dim Fichier As String
    Dim Texte As String
    Dim bCaseSensitive As Boolean
    Dim bWholeWordsOnly As Boolean
    Dim bReset As Boolean
     
    Fichier = "C:\_Formation_VBA\VBA - Création des Classes Personnalisées.pdf"
    Texte = "Code."
    bCaseSensitive = False
    bWholeWordsOnly = True
    bReset = False
     
    Set AcroAVDoc = CreateObject("AcroExch.AVDoc")
    If AcroAVDoc.Open(Fichier, "") Then
        Debug.Print AcroAVDoc.FindText(Texte, bCaseSensitive, bWholeWordsOnly, bReset)
    End If
     
    End Sub
    '------------------------------------------------------------------------------------------------------

    Bonne programmation.

  5. #5
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut
    Citation Envoyé par laurent_ott Voir le message
    Bonjour,
    Par curiosité j'ai regardé comment faire pour trouver un texte dans un fichier PDF.
    J'utilise PDF Creator Pro.

    Plus d'informations sur ce site : https://opensource.adobe.com/dc-acro...2FFindText.htm

    Qui donne aussi d'autres ressources pour PDF Creator Pro.

    Voici un exemple vite fait en mettant les arguments en dur dans le code, juste pour tester.

    Bonne programmation.
    Merci, mais ça plante ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set AcroAVDoc = CreateObject("AcroExch.AVDoc")
    Je vais continuer à chercher!!

    un grand merci!

  6. #6
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 246
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 246
    Par défaut
    Hello,
    si tu possèdes une version d'Excel qui le permet, tu peux aussi essayer d'utiliser Power Query. Il faudra aussi que tes fichiers PDF fonctionnent avec Power Query. Cela pourrait marcher même avec des fichiers PDF qui ne contiennent pas des tables.
    Voici un exemple pour rechercher une chaîne de texte dans un fichier PDF avec Power Query.
    Le principe :
    Dans un tableau structuré (TabPar) on indique le fichier dans lequel chercher et la chaîne à chercher.
    On va passer ces paramètres à la requête Power Query (RechercheChainePDF).
    Dans la requête Power Query on :
    1 - Lit les paramètres de recherche
    2 - Lit le fichier passé en paramètre
    3 - Filtre le tableau source avec le type "Page"
    4 - On développe toutes les colonnes trouvées Data.
    5 - On fusionne toutes ces colonnes en une seule (Trouvé) avec comme séparateur un caractère <espace>.
    6 - On filtre les lignes qui contiennent la chaîne à rechercher.


    Cela ne fonctionnera pas si la chaîne à chercher est coupée sur deux lignes. Dans ce cas, il faudrait fusionner toutes les lignes en une seule avec comme séparateur un espace et rechercher dans la ligne qui contiendrait alors tout le contenu texte du PDF.
    Voici les deux pages de mon fichier PDF de test (Refroidissement-version-eleves.pdf) qui contiennent la chaîne à rechercher :

    Nom : RechercheTexte.PNG
Affichages : 1472
Taille : 88,9 Ko

    Voici le code Power Query M de la requête de recherche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    let
        Params = Excel.CurrentWorkbook(){[Name="TabPar"]}[Content]{0},
        Source = Pdf.Tables(File.Contents(Params[Fichier]), [Implementation="1.3"]),
        #"FiltrePages" = Table.SelectRows(Source, each ([Kind] = "Page")),
        #"Data développé" = Table.Combine (#"FiltrePages"[Data] ),
        #"Fusionné" = Table.CombineColumns(#"Data développé", Table.ColumnNames(#"Data développé"), Combiner.CombineTextByDelimiter(" ", QuoteStyle.None), "Trouvé"),
        #"Résultat" = Table.SelectRows(#"Fusionné", each Text.Contains([Trouvé], Params[Recherche],Comparer.OrdinalIgnoreCase))
    in
        #"Résultat"
    et voici le résultat :
    Nom : ResRechPDF.PNG
Affichages : 1371
Taille : 12,6 Ko

    En pièce jointe, le classeur qui contient la requête Power Query. Ne pas oublier d'actualiser la requête en cas de changement dans les paramètres de recherche.

    Ami calmant, J.P
    Fichiers attachés Fichiers attachés

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    473
    Détails du profil
    Informations personnelles :
    Localisation : France, Vendée (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 473
    Par défaut
    Citation Envoyé par jurassic pork Voir le message
    Hello,

    jijie cherche à utiliser acrobat pdf reader pas pdf Creator. Acrobat Pdf Reader ne permet pas d'utiliser les objets AcroExch

    Ami calmant, J.P
    Oui effectivement, mais comment j'utilise "Acrobat Pdf Reader"?

Discussions similaires

  1. [XL-2016] Effectuer une recherche d'un mot sur un PDF ouvert avec un navigateur Internet
    Par marseille13 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 19/12/2019, 11h14
  2. Recherche mot dans .PDF avec macro VBA
    Par klemsy20 dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 25/09/2019, 14h15
  3. Rechercher mot dans PDF
    Par xev74 dans le forum ASP
    Réponses: 7
    Dernier message: 20/10/2006, 16h22
  4. [DEBUTANT]Recherche mot contenu dans une String
    Par lynxman dans le forum Langage
    Réponses: 7
    Dernier message: 16/12/2005, 11h49
  5. [langage] exp reg: recherche mot ou ensemble de mot
    Par eautret dans le forum Langage
    Réponses: 5
    Dernier message: 14/12/2004, 17h25

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