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 :

Tester présence d'une chaine de caractères dans un pdf


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut Tester présence d'une chaine de caractères dans un pdf
    Bonjour, je cherche à vérifier la présence d'une chaine de caractères dans un fichier pdf (Acrobat.exe*32) à partir d'une macro Excel.

    J'arrive à ouvrir le fichier à cherche et à fermer.

    L'option à laquelle je pense et de copier (dans le presse papier?) le texte sélectionner dans le pdf (équivalent d'un contrôle + f) et de la coller dans une variable. Si la variable est "", la chaine n'est pas dans le pdf.

    Si quelqu'un voit quelque chose, MERCI BEAUCOUP

    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
    Sub Tst()
    Dim Fichier As Variant
    Dim sMot As String
    Dim FichCherch As String
    Dim Tex As String
    Dim Niv As Long
    Dim OuC As Long
     
    Tex = Range("C" & ActiveCell.Row).Value
    sMot = Range("K2").Value
     
     
     
    Niv = CompterMot(Range("C2").Value, "\")
     
     
    OuC = InStr(Tex, Split(Tex, "\")(Niv)) - 1
     
    FichCherch = Mid(Tex, 1, OuC)
     
     
     
        ChDir FichCherch
     
        Fichier = Split(Tex, "\")(Niv)
     
     
        On Error Resume Next
     
     
        AcrobatFindTexte FichCherch & "\" & Fichier, sMot
     
     
      Call Fermer_Un_Programme("Acrobat.exe")
     
     
     
     
        End Sub
    Il existe certainement d'autres moyens, je suis preneur aussi.

  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

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    J'essaie d'adapter à mon cas mais je patauge.

    Les codes:

    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
    Sub Tst()
    Dim Fichier As Variant
    Dim sMot As String
    Dim FichCherch As String
    Dim Tex As String
    Dim Niv As Long
    Dim OuC As Long
     
    Tex = Range("C" & ActiveCell.Row).Value
    sMot = Range("K2").Value
     
     
    Niv = CompterMot(Range("C" & ActiveCell.Row).Value, "\")
     
    OuC = InStr(Tex, Split(Tex, "\")(Niv)) - 1
     
    FichCherch = Mid(Tex, 1, OuC)
     
     
     
        ChDir FichCherch
     
        Fichier = Split(Tex, "\")(Niv)
     
     
        On Error Resume Next
     
        AcrobatFindTexte FichCherch & "\" & Fichier, sMot
     
     
     
     
        End Sub

    et:

    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
    Sub RechInPdf()
     
     
     
    Dim AcroApp As Object, AcroAVDoc As Object, AcroPDDoc As Object, AcroTextSelect As Object
    Dim PageNum As Object, PageContent As Object, sContent As String, i As Long, j As Long, k As Long, iNumPages As Long
    Dim sResultat As String, sNomFichier As String, RchMotAdobePdf As String
        Set AcroApp = CreateObject("AcroExch.App")
        Set AcroAVDoc = CreateObject("AcroExch.AVDoc")
     
    sNomFichier = Range("C1").Value
     
        If AcroAVDoc.Open(sNomFichier, vbNull) <> True Then Exit Sub
     
        Set AcroPDDoc = AcroAVDoc.GetPDDoc
        iNumPages = AcroPDDoc.GetNumPages
        k = 2
        For i = 0 To iNumPages - 1
            Set PageNum = AcroPDDoc.AcquirePage(i)
            Set PageContent = CreateObject("AcroExch.HiliteList")
            If PageContent.Add(0, 8000) <> True Then Exit Sub
            Tst
            Set AcroTextSelect = PageNum.CreatePageHilite(PageContent)
            For j = 0 To AcroTextSelect.GetNumText - 1
                sContent = AcroTextSelect.GetText(j)
     
    MsgBox sContent
    Select Case sContent
    Case Is = Range("K2").Value
    MsgBox sContent
    End Select
            Next j
     
     
     
        Next i
     
        AcroAVDoc.Close False
        AcroApp.Exit
     
        Set AcroAVDoc = Nothing
        Set AcroApp = Nothing
     
        RchMotAdobePdf = sResultat
     
     
        Range("D1").Value = RchMotAdobePdf
     
    End Sub
    J'essaie de sélectionner mon texte avec , j'y parviens.

    Mais si la MsgBox du code: me renvoie bien plusieurs valeurs dont celle dans , quand j'essaiede faire quelque chose avec:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sContent = Range("K2").Value
    , rien en se passe et si je laisse filer:
    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
     Next j
     
     
     
     
                    Cells(ActiveCell.Row + 1, k) = sResultat 'i + 1
     
                    k = k + 1
     
     
        Next i
     
        AcroAVDoc.Close False
        AcroApp.Exit
     
        Set AcroAVDoc = Nothing
        Set AcroApp = Nothing
     
        RchMotAdobePdf = sResultat
     
     
        Range("D1").Value = RchMotAdobePdf
     
    End Sub
    Rien en se passe non plus.


    Je sais bien que je partais d'une Function pour arriver à une Sub mais cela correspond mieux à mon cas, je cherche "simplement" à inscrire le résultat dans une céllule (pour l'instant) et non pas à l'intégrer dans toute la mise en page du Code que vous me suggérer.


    Suis-je dans la bonne direction ou fais-je complètement fausse route???


    MERCI

  4. #4
    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, voir ici une utilisation qui fonctionne des 2 derniers fichiers proposés.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    Le code qui m'a permis d'arriver à mes fins:

    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
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    Sub RechInPdf()
     
     
     
    Dim AcroApp As Object, AcroAVDoc As Object, AcroPDDoc As Object, AcroTextSelect As Object
    Dim PageNum As Object, PageContent As Object, sContent As String, i As Long, j As Long, k As Long, iNumPages As Long
    Dim sResultat As String, sNomFichier As String, RchMotAdobePdf As String, Src As String
        Set AcroApp = CreateObject("AcroExch.App")
        Set AcroAVDoc = CreateObject("AcroExch.AVDoc")
     
    sNomFichier = Range("C" & ActiveCell.Row).Value
     
        If AcroAVDoc.Open(sNomFichier, vbNull) <> True Then Exit Sub
     
        Set AcroPDDoc = AcroAVDoc.GetPDDoc
        iNumPages = AcroPDDoc.GetNumPages
     
     
     
        For i = 0 To iNumPages - 1
            Set PageNum = AcroPDDoc.AcquirePage(i)
            Set PageContent = CreateObject("AcroExch.HiliteList")
            If PageContent.Add(0, 8000) <> True Then Exit Sub
     
            Set AcroTextSelect = PageNum.CreatePageHilite(PageContent)
            For j = 0 To AcroTextSelect.GetNumText - 1
                sContent = AcroTextSelect.GetText(j)
                Range("K1").Value = Replace(sContent, " ", "")
     
                Select Case Range("K3").Value
    Case Is = "="
    Range("E" & ActiveCell.Row).Value = Range("E" & ActiveCell.Row).Value & Range("C" & ActiveCell.Row).Value & Chr(10)
     
    Case Is = "<>"
     
     
     
    End Select
     
     
     
            Next j
     
     
        Next i
     
     
     
        AcroAVDoc.Close False
        AcroApp.Exit
     
        Set AcroAVDoc = Nothing
        Set AcroApp = Nothing
     
    Call Fermer_Un_Programme("Acrobat.exe")
     
     
     
       Range("C" & ActiveCell.Row + 1).Select
     
     
     
    End Sub

  6. #6
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    MERCI POUR LE COUP DE MAIN!!!!!!!!!!!!!!

  7. #7
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    1 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mai 2012
    Messages : 1 150
    Par défaut
    En effet, je ne suis pas programmeur mais j'ai trouvé ma solution à force de triturer ce code et grâce à ton aide.
    Si c'est un jugement de valeur alors je suis très heureux de ne pas être un programmeur....

  8. #8
    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, surtout que le tout 1er lien t'apportait une réponse à ton niveau.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 25/02/2011, 10h36
  2. Réponses: 4
    Dernier message: 24/04/2007, 21h58
  3. Réponses: 3
    Dernier message: 13/11/2006, 16h08
  4. [String]Recherche d'une chaine de caractères dans une autre
    Par Crazyblinkgirl dans le forum Langage
    Réponses: 3
    Dernier message: 29/07/2004, 11h51
  5. recherche d'une chaine de caractère dans une données text
    Par jdeheul dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 17/06/2004, 16h35

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