Erreur Automation lors d'une réouverture de fichier si fermé

Bonjour à tous.

J'avais un code qui fonctionnais parfaitement sur Acrobat 2017. Mais mon entreprise a décidé de Passer en abonnement sur Acrobat Pro pour des questions de compatibilité entre les utilisateurs. Et depuis bah ça plante...

En gros j'ouvre un fichier PDF pour le signer numériquement. La macro vérifie sur le fichier est signé ensuite. Évidement si le fichier a été fermé impossible de vérifier la signature, donc dans ce cas j'ouvre à nouveau le fichier pour faire la vérification et c'est la que ça plante.

J'ai cette erreur

capture d ecran 2023 09 29 141554

Et voici mon code:

Signature:

    MsgBox "Veuillez signer numériquement la revue de contrat simplifiée puis cliquer sur OK.", vbMsgBoxSetForeground

    If AVDoc.Open(Document1, "") = False Then 'Si PDF Ouvert
        Set x = JSO.getField("Signature1")
        z = x.signatureValidate
        If z = 0 Then
            MsgBox "La revue de contrat simplifiée n'as pas été signée.", vbMsgBoxSetForeground + vbExclamation, "Erreur"
            If AVDoc.Open(Document1, "") = False Then
                GoTo Signature
            Else
                Set AVDoc = CreateObject("AcroExch.AVDoc")
                AVDoc.Open Document1, ""
                Set PDDoc1 = AVDoc.GetPDDoc
                Set JSO = PDDoc1.GetJSObject
                GoTo Signature
            End If
        Else
            GoTo Fin
        End If

J'ai l'impression que c'est le second Set AVDoc qui ne fonctionne pas, pourtant le premier fonctionne bien. J'ai essayer une parade en passant par un Call Shell, mais du coup je n'arrive plus à tester la valeur X avec JSO.getFlied, donc je suis un peu perdu.

Auriez-vous une idée ? Ne pas tester la signature est pas possible car notre organisme notifié nous l'impose, et ceux qui remplissent le fichier ne sont clairement pas assez sérieux pour se passer de cette vérification.

Merci.

Bonjour Heelflip, une piste
Assure-toi que les références dans ton projet VBA sont correctes pour la nouvelle version d'Acrobat Pro. Tu devrais vérifier si les références à la bibliothèque d'objets Adobe Acrobat sont à jour.

Les nouvelles versions d'Acrobat peuvent avoir des restrictions de sécurité plus strictes en ce qui concerne l'exécution de macros. Assure-toi que tes macros sont configurées pour être exécutées en toute sécurité. Tu peux vérifier ces paramètres dans les préférences d'Acrobat.

Salut Stepaustras,

Alors j'avais un soucis avec un ReplacePage donc les protections renforcées d'Adobe sont déjà désactivées, ce qui a corrigé une partie de mes soucis.

Pour les références je n'avais que cela activé avant et je n'ai donc rien changé, j'ai essayé d'ajouter des références Adobe ou Acorbat mais cela ne change strictement rien. Avant cela fonctionnait parfaitement avec ces 5 références.

capture d ecran 2023 09 29 150855

A tester

Sub TaMacro()
    Dim AVDoc As Object
    Dim PDDoc1 As Object
    Dim JSO As Object
    Dim x As Object
    Dim z As Long
    Dim Document1 As String

    On Error Resume Next ' Ignore temporairement les erreurs

    ' Affiche un message demandant de signer numériquement
    MsgBox "Veuillez signer numériquement la revue de contrat simplifiée puis cliquer sur OK.", vbMsgBoxSetForeground

    ' Tentative d'ouverture du document PDF
    If AVDoc.Open(Document1, "") = False Then
        ' Gestion d'erreur : Si le document PDF n'a pas pu être ouvert
        MsgBox "Erreur lors de l'ouverture du document PDF : " & Err.Description, vbExclamation, "Erreur"
        Exit Sub ' Quitte la macro en cas d'erreur d'ouverture
    End If

    ' Rétablis la gestion des erreurs normale
    On Error GoTo 0

    ' Obtient le champ de signature
    Set x = JSO.getField("Signature1")
    If x Is Nothing Then
        ' Gestion d'erreur : Si le champ de signature n'a pas été trouvé
        MsgBox "Le champ de signature n'a pas été trouvé.", vbExclamation, "Erreur"
        Exit Sub ' Quitte la macro en cas d'erreur de champ de signature
    End If

    ' Vérifie la signature
    z = x.signatureValidate
    If z = 0 Then
        ' Gestion d'erreur : Si la signature est invalide
        MsgBox "La revue de contrat simplifiée n'a pas été signée.", vbExclamation, "Erreur"
        Exit Sub ' Quitte la macro en cas de signature invalide
    End If

    ' Si tout s'est bien passé, la signature est valide
    GoTo Fin

Fin:
    ' Le code à exécuter lorsque tout est terminé avec succès

End Sub

Assure-toi que tu utilises la dernière version d'Acrobat Pro, car les mises à jour peuvent corriger des problèmes de compatibilité et de stabilité.

Toujours cette erreur automation et impossible de regarder le débogage.

Je vais essayer de faire une mini macro Test pour partager ici car mon fichier sera trop compliqué à modifier pour être exploitable ici. Je n'arrive vraiment pas à comprendre pourquoi

If AVDoc.Open(Document1, "") = False ... Else

ne fonctionne pas si Acrobat est fermé. Il devrait me renvoyer sur le Else puisque la condition n'est pas bonne. et non pas me mettre une erreur automation.

Bonjour Heelflip,

L'erreur d'automatisation que tu rencontres est due au fait qu'Acrobat n'est pas disponible pour l'automatisation lorsque l'application est fermée. Le modèle d'objet d'Acrobat nécessite que l'application Acrobat Reader ou Acrobat Pro soit en cours d'exécution pour que les opérations d'automatisation réussissent.

Lorsque tu appelles AVDoc.Open(Document1, "") et qu'Acrobat n'est pas en cours d'exécution, cela génère une erreur d'automatisation car le modèle d'objet Acrobat n'est pas accessible.

Pour éviter cette erreur, tu peux utiliser la méthode que je t'ai mentionnée précédemment pour vérifier si Acrobat est en cours d'exécution avant de tenter des opérations d'automatisation. Cela te permettra de gérer proprement le cas où Acrobat n'est pas disponible et d'éviter les erreurs.

Dim AcroApp As Object
On Error Resume Next
Set AcroApp = GetObject(, "AcroExch.App")
On Error GoTo 0

If AcroApp Is Nothing Then
    ' Acrobat n'est pas en cours d'exécution, traite le cas ici
    MsgBox "Acrobat n'est pas en cours d'exécution."
Else
    ' Acrobat est en cours d'exécution, effectue des opérations d'automatisation
    ' Par exemple, ouvre le document
    Set AVDoc = CreateObject("AcroExch.AVDoc")
    If AVDoc.Open(Document1, "") = False Then
        ' Le document n'a pas pu être ouvert
        MsgBox "Impossible d'ouvrir le document."
    Else
        ' Le document a été ouvert avec succès
        ' Effectue d'autres opérations ici
    End If
End If

Cela ne fonctionne pas non plus. C’est pire encore si j’insère le

Set AcroApp = GetObject(, "AcroExch.App")

Je vais bosser sur un petit code à partager que tu puisses voir le code dans sa globalité. Car la je sèche complètement. Cela fonctionnait si bien sur Adobe 2017...

Je regardais ça, l'as tu ?

Lien

Et là

Lien

Peu être juste une question de mise a jour Office

Et en désinstallant Adode pro et une réinstallation avec un installeur?

Salut Stepaustras,

J'ai avancé sur le sujet, pour te répondre tout est à jour.

Par contre chose bizarre j'ai un autre fichier utilisant ce système de signature. Et lui fonctionne parfaitement, si le fichier est fermé, il l'ouvre de nouveau pour le faire signer, malgré le fait qu'Acrobat soir fermé. Il utilise la référence Adobe Acrobat 10.0 Type Library.

Alors ce qui est bizarre c'est que dans le premier fichier je ne la trouve pas, enfin sous ce nom, en l'ajoutant manuellement je vois qu'elle axistait déjà sous le nom "Abode". Les deux fichiers sont issue de la même version d'Office, utilisent la même version d 'adobe, ont le même code mais l'un ne fonctionne pas c'est juste dingue Je continue à travailler sur le sujet.

Bon ça y est...

Sujet résolu. Alors pour tous ceux qui auraient ce soucis...

J'ai réinstallé Acrobat via Créative Cloud. Ensuite dans les référence Macro, j'ai coché la référence Adobe, une fois enregistré et redémarré, la macro affiche dans ses référence Adobe Acrobat 10.0 Type Library et là tout fonctionne. Les bizzarerie de l'informatique...

Énorme merci à toi Stepaustras, car tes pistes m'ont conduit à ce résultat

Bonjour Heelflip, En faite c'était ça ?

Et en désinstallant Adode pro et une réinstallation avec un installeur?

Oui mais pas que. J'ai quand même du retourner dans les références qui n'étaient plus là. Est-ce Lié ?

Rechercher des sujets similaires à "erreur automation lors reouverture fichier ferme"