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 :

VBA Ajout d'une image en pied de page à un PDF


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 9
    Par défaut VBA Ajout d'une image en pied de page à un PDF
    Bonjour à tous,

    j'ai un soucis avec le code que j'ai à disposition.

    Contexte:
    Via une liste de liens PDF dans un fichier Excel, j'intègre dans tous les fichiers de cette liste une image (via le lien indiqué dans une cellule).

    Le code fonctionne bien sauf quand il y a un champ dynamique, je n'y accède plus.
    En effet, l'image est intégré comme un bouton d'où le fait que je n'accède plus aux champs dynamiques en arrière plan.

    Quelqu'un pourrait-il m'aider à trouver la solution pour que j'intègre l'image sans qu'il n'y ait de problème de saisie dans le PDF ?

    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
    Public Sub InsertImagePDF()
     
    Dim PDFinputFile As String, PDFoutputFile As String
    Dim imageFile As String
    Dim AcrobatApp As Acrobat.AcroApp
    Dim AcroAVDocInput As Acrobat.AcroAVDoc 'PDF à modifier
    Dim AcroPDDocInput As Acrobat.AcroPDDoc 'PDF modifié
    Dim jso As Object
    Dim pageRect As Variant
    Dim pageField As Object
    Dim fieldRect(0 To 3) As Double
    Dim page As Long
    Dim CelImage As String
    Dim Cel As Range
     
    CelImage = Range("B1").Value 'Lien vers l'image à intégrer
     
    Range("A3", Range("A3").End(xlDown)).Select 'Liste des liens PDF à modifier
     
    For Each Cel In Range("A3", Range("A3").End(xlDown))
    If Cel <> "" Then
     
        PDFinputFile = Cel
        imageFile = CelImage
     
        PDFoutputFile = Replace(PDFinputFile, ".pdf", " Modif.pdf")
     
        Set AcrobatApp = New Acrobat.AcroApp
        Set AcroAVDocInput = New Acrobat.AcroAVDoc
     
        If AcroAVDocInput.Open(PDFinputFile, "") Then
     
            Set AcroPDDocInput = AcroAVDocInput.GetPDDoc()
     
            Set jso = AcroPDDocInput.GetJSObject
     
            For page = 0 To AcroPDDocInput.GetNumPages() - 1
     
                'Obtenir les coordonnées des limites de la page - calcul position du bouton
                pageRect = jso.getPageBox("Crop", page)
     
                'Coordonnées du bouton à ajouter - en haut à gauche (x,y), en bas à droite (x,y)
     
                'Etirer en haut à gauche
                fieldRect(0) = 30
                'Réduire vers la gauche
                fieldRect(1) = 660
                'Etirer en bas à droite
                fieldRect(2) = 580
                'Haut - Bas
                fieldRect(3) = -590
     
                'Ajout du bouton avec image
                Set pageField = jso.addField("button" & page + 1, "button", page, fieldRect)
                pageField.buttonImportIcon imageFile
                pageField.buttonPosition = jso.Position.iconOnly
                pageField.ReadOnly = False
     
            Next
     
            AcroPDDocInput.save 1, PDFoutputFile
            AcroAVDocInput.Close True
            AcroPDDocInput.Close
     
    'Si besoin, ouverture du PDF modifié
    '        If AcroAVDocInput.Open(PDFoutputFile, "") Then
    '            AcrobatApp.Show
    '        End If
     
        Else
     
            MsgBox "Erreur dans le listing des liens PDF."
     
        End If
     
        Set AcroPDDocInput = Nothing
        Set AcroAVDocInput = Nothing
        Set AcrobatApp = Nothing
     
    End If
     
    Next Cel
     
    MsgBox "Tous les fichiers PDF ont été modifié !"
     
    End Sub

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Juste une idée comme ça, non testée, dans ta ligne Set pageField, remplace "button" par "text" ou "none".

  3. #3
    Membre habitué
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 9
    Par défaut
    Merci Franc, pour ton message.

    Cela ne fonctionne pas, j'ai essayé plusieurs mot.. mais rien

  4. #4
    Membre habitué
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 9
    Par défaut
    Bonjour,

    quelqu'un aurait-il une idée pour pouvoir mettre le bouton en arrière plan ?

    Une autre idée ..
    quelqu'un aurait peut-être une autre solution à me proposer pour pouvoir ajouter un logo en bas de page dans un PDF (sur plusieurs PDF à la chaîne) ?


  5. #5
    Membre habitué
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Janvier 2021
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2021
    Messages : 9
    Par défaut
    Bonjour, je relance le sujet

    J'ai ajouté dans le code pageField.zOrder = 1 mais toujours rien.
    J'ai également essayé avec Setfocus mais rien.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    'Add button
    Set pageField = jso.addField("Pied de page", "button", 0, fieldRect)
    pageField.buttonImportIcon imageFile
    pageField.buttonPosition = jso.Position.iconOnly
    pageField.ReadOnly = True
    Je commence à croire qu'il n'y a pas de solution pour pouvoir mettre ce bouton avant les champs dynamique.

    Si certains ont une idée, n'hésitez pas

Discussions similaires

  1. [2013] insérer un numéro de page dans une image _ pied de page
    Par Lulu3344 dans le forum Microsoft Office
    Réponses: 3
    Dernier message: 27/07/2016, 11h49
  2. [XL-2010] Insérer une image en pied de page avec un check box
    Par PatProg dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 06/08/2013, 18h16
  3. [VBA] Ajouter dynamiquement une référence
    Par jpharand dans le forum VBA Access
    Réponses: 23
    Dernier message: 16/04/2010, 23h28
  4. Réponses: 5
    Dernier message: 21/01/2007, 19h31
  5. [VBA-E]Ouvrir une image jpg àl'aide d'une macro
    Par delamarque dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 15/03/2006, 09h47

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