Vérifier existance objet dans un PDF via VBA

Bonjour à tous,

J'enregistre via VBA mon Excel en PDF avec ouverture après enregistrement. Je demande à l'utilisateur de signer numériquement le PDF. Ceci donne création à un objet appelé "Signature2" donc je teste l’objet pour valider que le PDF a correctement été signé.

Si c'est le cas pas de soucis l’objet existe il est validé et tout est cool. Mais dans le cas ou l'utilisateur n'a pas signé, l’objet n'existe pas et Excel me met une erreur "Objet Requis" ce qui est normal. Le soucis est que je ne sais pas comment vérifier l'existence de l'objet. J'ai bien trouvé le "exists" dans le SDK Acorbat mais je n'arrive pas à l'utiliser correctement. Quelqu'un aurait-il la solution ?

Voici mon code actuel sans la vérification de l'existence de l'objet.

    Set AVDoc = CreateObject("AcroExch.AVDoc")
    If AVDoc.Open(Chemin, "") Then 'Si PDF Ouvert
        Set PDDoc = AVDoc.GetPDDoc
        Set JSO = PDDoc.GetJSObject
        Set x = JSO.getField("Signature2")
        z = x.signatureValidate
        If z = 1 Then
            MsgBox "Signé.", vbMsgBoxSetForeground + vbExclamation, "Test OK"
        Else
            MsgBox "L'objet n'existe pas"
            GoTo Signature
        End If
    End If

Re, alors après pas mal de recherche sur les forum Acrobat anglais, j'ai trouvé mon bonheur. Donc je partage si quelqu'un cherche un jour une solution. Elle n'est pas parfaite car ne réalise pas ce que je voulais au départ à savoir vérifier si un objet existe mais c'est un contournement. Étant donné que mon PDF est un PDF simple avec juste une signature, il ne contiendra qu'un seul objet au final, je passe donc pas un .numfields() qui me permet de vérifier le nombre d'objet, si ce dernier est à zéro alors pas de signature. Je garde quand même une vérification finale de la signature au cas ou elle aurait été effacée après, ce qui aurai pour effet de garder l'objet sans qu'elle ne soit valide pour autant, voici mon code, assez content d'avoir trouvé par moi même pour une fois

L'avantage de ce code est que si la personne ferme le PDF, il sera de nouveau ouvert pour demander la signature, on évite les by-pass (Je connais trop mes collègues)

Signature:

    MsgBox "Veuillez signer numériquement le rapport.", vbMsgBoxSetForeground + vbInformation, "Signature"

    Set App = CreateObject("AcroExch.app")
    Set AVDoc = CreateObject("AcroExch.AVDoc")
    If AVDoc.Open(Chemin, "") = True Then 'Si PDF non ouvert
        Set PDDoc = AVDoc.GetPDDoc
        Set JSO = PDDoc.GetJSObject
        If JSO.numfields() = 0 Then
            GoTo Signature
        Else
            Set x = JSO.getField("Signature2")
            z = x.signatureValidate
            If z = 0 Then
                MsgBox "Le rapport d'audit n'a pas été signé.", vbMsgBoxSetForeground + vbExclamation, "Fichier non signé"
                GoTo Signature
            Else
                GoTo Fin
            End If
        End If
    End If

Fin:

    If AVDoc.Open(Chemin, "") = False Then 'Si PDF ouvert
        PDDoc.Close
        AVDoc.Close (True)
        App.Hide
    End If

    'Réinitialisation des objets
    Set x = Nothing
    Set JSO = Nothing
    Set PDDoc = Nothing
    Set AVDoc = Nothing
Rechercher des sujets similaires à "verifier existance objet pdf via vba"