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 :

Gestion des CreateObject instances PDF


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    419
    419 est déconnecté
    Membre confirmé
    Homme Profil pro
    Portage Salarial
    Inscrit en
    Mars 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Portage Salarial
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 82
    Par défaut Gestion des CreateObject instances PDF
    Bonjour,
    j'ai un fichier PDF de plusieurs page contenant des bulletins de paie. je l'extrait en autant de pages que de bulletin puis via macro je cherche à trouver le nom du salarié pour pouvoir renommer ce fichier avec le nom du salarié trouvé. une 2ème macro modifiera le nom du fichier.

    j'ai tant bien que mal créé la macro pour chercher le nom présent sur le pdf puis le copier sur excel ou mettre "not found" si pas trouvé (erreur dans le nom par exemple ou nouveau salarié dont je n'ai pas le nom.

    Ca marche un peu.. plutôt en mode pas à pas car quand je lance la macro ca plante au bout de qq fichiers sur la base d'un "excel est en attente d’une autre application pour terminer une action OLE".
    Je pense que ce sont mes instances createobjects qui au fur et à mesure restent en mémoire et font planter excel.

    merci pour vos retours si celà vous parle.

    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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    Sub FindTextInPDF() 'pour renommer fichier 
     
        '----------------------------------------------------------------------------------------
        'The code uses late binding, so no reference to external library is required.
        'However, the code works ONLY with Adobe Professional, so don't try to use it with
        'Adobe Reader because you will get an "ActiveX component can't create object" error.
        'site:          http://www.myengineeringworld.net
        '----------------------------------------------------------------------------------------
     
        Dim TextToFind  As String
        Dim PDFPath     As String
        Dim App         As Object
        Dim AVDoc       As Object
        Dim i As Integer
        Dim j As Integer
        Dim IDdone As Integer 'prend valeur 1 quand bullpaie identifié
        Dim DerlignSAL As Integer
        Dim DerlignBUL As Integer
     
        DerlignSAL = Cells(60, 5).End(xlUp).Row
        DerlignBUL = Cells(60, 1).End(xlUp).Row
     
        'Initialize Acrobat by creating the App object.
        Set App = CreateObject("AcroExch.App")
     
        'Check if the object was created. In case of error release the object and exit.
        If Err.number <> 0 Then
            MsgBox "Could not create the Adobe Application object!", vbCritical, "Object Error"
            Set App = Nothing
            Exit Sub
        End If
     
        On Error GoTo 0
     
        For j = 2 To DerlignBUL 'liste la totalité des fichiers
            For i = 2 To DerlignSAL - IDdone 'Liste la totalité des salariés
     
            TextToFind = Split(LTrim(Cells(i, 5).Value) & Space(1))(0) 'premier mot à trouver
             PDFPath = Cells(j, 1).Value
     
            'Create the AVDoc object.
            Set AVDoc = CreateObject("AcroExch.AVDoc")
     
            'Check if the object was created. In case of error release the objects and exit.
            If Err.number <> 0 Then
                MsgBox "Could not create the AVDoc object!", vbCritical, "Object Error"
                Set AVDoc = Nothing
                Set App = Nothing
                Exit Sub
            End If
     
            On Error Resume Next
     
            'Open the PDF file.
            If AVDoc.Open(PDFPath, "") = True Then
                '    AVDoc.BringToFront
     
                If AVDoc.FindText(TextToFind, False, True, False) = False Then   
                    'Text was not found, close the PDF file without saving the changes.
                    AVDoc.Close True
                    'Release the objects.
                    Set AVDoc = Nothing   
                   'Inform the user.
                    Cells(j, 4) = "NOT FOUND"
                Else
                    Cells(j, 4) = TextToFind 'si trouvé coller le nom
                    IDdone = IDdone + 1 'incrémenter ID pour réduire la recherche pour le prochain
                    Cells(i, 5).Delete shift:=xlUp 'supprimer le nom trouvé de la liste de recherche pour réduire la liste de recherche
                        'Release the objects
                         AVDoc.Close True
                    Set AVDoc = Nothing
                    Exit For 'sortir de la boucle pour en commencer une autre en incrémentant J
                End If
     
            Else
                    'Unable to open the PDF file, close the Acrobat application.
                App.Exit
                    'Release the objects.
                Set AVDoc = Nothing
                Set App = Nothing
                'Inform the user.
                MsgBox "Could not open the PDF file!", vbCritical, "File error"
     
            End If
            Next
        Next
                  'Close the Acrobat application.
                    App.Exit
                    Set App = Nothing
     
     
    End Sub

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 251
    Par défaut
    Hello,
    tu peux peut-être trouver une solution à ton problème ici ou ici ( ajout d'une temporisation ou modification d'un paramètre d'acrobat).

    Ami calmant, J.P

  3. #3
    419
    419 est déconnecté
    Membre confirmé
    Homme Profil pro
    Portage Salarial
    Inscrit en
    Mars 2005
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Portage Salarial
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 82
    Par défaut
    @jp, merci pour ton retour.
    subtilité des "objects" qui ne concerne pas que moi en fait
    celà dépasse mes compétences.

Discussions similaires

  1. Gestion des instances sous Citrix ?
    Par Bruno13 dans le forum Composants VCL
    Réponses: 0
    Dernier message: 12/03/2011, 20h39
  2. Réponses: 1
    Dernier message: 19/03/2010, 23h43
  3. [Joomla!] Gestion des articles et affichage en PDF
    Par mme_chelaou dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 12/05/2009, 10h07
  4. Gestion des PDF vide
    Par lucyole dans le forum iReport
    Réponses: 1
    Dernier message: 26/03/2008, 10h50
  5. Gestion des Fonts dans le PDF
    Par JMLD dans le forum XMLRAD
    Réponses: 4
    Dernier message: 05/08/2005, 11h09

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