Remplir un formulaire de PDF depuis Excel.

1
297

Dans cette video je vais vous montrez comment remplir un formulaire qui se trouve dans un fichier PDF et puis de le sauvegarder dans un dossier depuis un tableau qui contient les informations qui doivent être placer dans le formulaire.

Mettre Microsoft PDF print par default

Nous allons commencer par le début et donc mettre Microsoft PDF print comme choix d’imprimante par default sinon quand nous allons vouloir sauvegarder le fichier PDF on risque de non pas les sauvegarder mais de les imprimes.

Pour cela aller dans Imprimantes et scanner et placer Microsoft Print to PDF par défaut

Trouver un fichier PDF avec un formulaire

Désormais il faut trouver un formulaire PDF moi j’en ai créé une qui est composé de quelque champs notamment prénom, nom, âge, rue, numéro, ville et pays.

si vous ne savez pas comment créer un tel formulaire vous pouvez en retrouver gratuitement online. Dans cet exemple j’ai utilisé un logicielle avec une version gratuite qui place une watermark

Le ficher Excel

Nous avons aussi une table Excel qui contiens les informations à placer dans chaque formulaire et l’objectif est d’avoir une ligne d’information pour chaque formulaire

Ouvrir le Fichier PDF

Alors nous allons commencer par ouvrir notre fichier PDF depuis notre bouton Start. Pour cela nous allons créer une variable qui se nomme filePath et qui contiendra l’emplacement du fichier PDF

Dim filePath As String
filePath = "E:\tuto de rien\Excel\Pdf form update\Simple contact form.pdf"

Pour l’ouvrir rien de plus simple avec createObject

CreateObject("Shell.Application").Open (filePath)

Sélectionner la zone de texte

Désormais nous allons devoir sélectionner l’emplacement de la première zone de texte et comme vous pouvez vous en douter on ne peut pas dire prend la souris et place là dans la première zone de texte. Pour cela nous allons devoir utiliser les raccourci clavier comme la touche tabulation.

Dans notre exemple il me faut appuyer 9 x sur la touche tabulation avant d’arriver sur la première ligne à remplir. Donc nous allons créer une fonction qui va faire cela pour nous dans notre code vba.

Private Sub fieldTab(amount As Integer)
    Dim x As Integer
    For x = 1 To amount
        Application.SendKeys "{TAB}", True
    Next
End Sub

Et puis nous allons faire appelle à cette méthode dans notre bouton et indiquer qu’il doit le faire 9 x. mais avant de commencer cela nous allons devoir attendre que le fichier s’ouvre donc nous allons devoir dire à notre code d’attendre quelque seconde et tout dépend à quelle vitesse votre fichier PDF s’ouvre.

Application.Wait Now + 0.00003

‘number of tabs before the first input field in the PDF form

fieldTab 9

Remplir les zones de textes

il est temps de remplir nos champs de texte et la aussi nous allons crée une fonction qui va donc remplir le champs et puis passer au suivant avec une tabulation.

Private Sub setInfo(info As String)
    Application.SendKeys info, True
    Application.SendKeys "{TAB}", True

End Sub

Et nous allons remplir chaque champs grâce à cette fonction, vérifier bien quelle champs se remplie apres chaque tabulation. Dans mon exemple le premier champs First name est la dernière tabulation donc je vais prendre cela en compte

'set last name
setInfo “SampleLastName”
'set age
setInfo “SampleAge”
'set street
setInfo “SampleStreet”
'set house number
setInfo “SampleNumber”
'set city
setInfo “Samplecity”
'set country
setInfo “SampleCountry”
'set first name
setInfo "SampleFirstName"

Sauvegarder le fichier PDF

Bon nous avons notre fichier PDF rempli avec nos informations il est temps de les sauvegarder dans un emplacement voulut.  Pour cela nous allons créer aussi un nouvelle fonction qui aura besoin de deux paramètre le nom final du fichier et l’endroit.

savePDF .Range("b" & line).Value & "_" & .Range("c" & line).Value, "E:\tuto de rien\Excel\Pdf form update\saved_PDF\"

Pour cela nous allons donc dire qu’il faut ouvrir la page d’impression avec la commende ctrl + p mais avec les sendKeys donc ^(p) ici aussi nous allons attendre quelque seconde

Puis nous allons appuyer sur la touche entrée mais il faut savoir qu’il y a deux touche d’entrée sur notre clavier celui près des touches de texte et l’autre du coté du pavé numérique. Alors si vous n’avez pas de pavé numérique et que vous indiquer cette touche, rien ne se passera donc nous allons utiliser celui à coter des lettres comme suite « ~» avec la touche Tilde.

Puis nous allons sélectionner l’emplacement du nom du fichier qui peut être sélectionner avec la touche raccourci ALT + n donc %n et pour finir nous allons enregistre avec ALT + E donc %e

Mais ce n’est pas encore finit car si le fichier existe déjà un message d’erreur apparait et il faut s’en occuper aussi si c’est le cas donc là nous allons simplement dire que nous allons écraser le fichier existant par le nouveau avec le raccourci ALT + o donc %o.

Désormais c’est fini nous alons fermer le fichier dans mon cas c’est une page web qui s’ouvre donc pour le fermer c’est CTRL + w donc ^w. si sella ne marche pas pour vous chercher le raccourci pur fermer votre lecteur de PDF.

Private Sub savePDF(filename, folder As String)
    Application.SendKeys "^(p)", True
    Application.Wait Now + 0.00003
    Application.SendKeys "~", True
    Application.Wait Now + 0.00003
    Application.SendKeys "%(n)", True
    Application.SendKeys folder & filename, True
    Application.SendKeys "%(e)", True
    Application.Wait Now + 0.00002
    Application.SendKeys "%(o)", True
    Application.Wait Now + 0.00002
    Application.SendKeys "^(w)", True
End Sub

Pfiou nous avons registré notre fichier et c’est fini

Utiliser chaque ligne d’une table

Donc nous avons créer notre structure pour automatiser une transaction mais si nous voulons appliquer cela à toutes les lignes de notre tableau nous allons définir la limite de notre tableau avec une variable lastrow

Dim lastRow As Integer
lastRow = Sheets(1).Range("b9999").End(xlUp).Row

puis nous allons créer une boucle for qui vas aller dans chaque ligne de notre tableau et depuis chaque ligne nous allons prendre les information à placer et les mettre dans le bonne emplacement  comme suite.

Dim line As Integer
    For line = 3 To lastRow
        CreateObject("Shell.Application").Open (filePath)
        Application.Wait Now + 0.00003
        'number of tabs before the first input field in the PDF form
        fieldTab 9
        With Sheets(1)
            'set last name
            setInfo .Range("c" & line).Value
            'set age
            setInfo .Range("d" & line).Value
            'set street
            setInfo .Range("e" & line).Value
            'set house number
            setInfo .Range("f" & line).Value
            'set city
            setInfo .Range("g" & line).Value
            'set country
            setInfo .Range("h" & line).Value
            'set first name
            setInfo .Range("b" & line).Value
            
            savePDF .Range("b" & line).Value & "_" & .Range("c" & line).Value, "E:\tuto de rien\Excel\Pdf form update\saved_PDF\"
        End With
    Next

Et la si nous allons lancer notre code nous allons ouvrir le fichier le remplir et le sauvegarder pour chaque ligne de notre tableau.

Il est important de ne pas toucher votre ordinateur car désormais c’est Excel qui travaille à votre place.

Voila j’espère que cela vous à plus et on se retrouve dans une prochaine vidéo.

1 COMMENTAIRE

  1. Bonjour Daniel.
    J’ai besoins de faire l’inverse.
    C’est de récupérer dans un tableau excel les données de plusieurs formulaires remplis et renvoyés par plusieurs utilisateurs.
    Merci d’avance.

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.