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 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115
| Option Explicit
'Tuto https://www.youtube.com/watch?v=7pjJZNRpZc8&t
'Action pour ouvrir le fichier PDF à remplir
Private Sub CommandButtonStart_Click()
Dim filePath As String
filePath = "G:\Poubelle\Publipost.pdf"
'On parcours le fichier excel à la recherche des données de chaque colonne
Dim lastrow As Integer
lastrow = Sheets(1).Range("b9999").End(xlUp).Row
'Boucle de recherche des données de chaque ligne
Dim line As Integer
'On commence à la ligne 2 pour ne pas prendre en compte les entêtes pendant le remplissage du PDF
For line = 2 To lastrow
CreateObject("Shell.application").Open (filePath)
'Délai d'attente avant de commencer à faire les TAB
Application.Wait Now + 0.00003
'Nombre de tabulations à faire avant d'arriver au premier champ remplissable du PDF lorsqu'on l'ouvre dans Google Chrome
fieldTab 1
'Pour afficher les vraies informations de la ligne du fichier excel et non pas SampleLastName ou SampleStreet comme dans l'exemple
With Sheets(1)
'SET ANNÉE SCOLAIRE DÉBUT
setInfo "2022"
'SET ANNÉE SCOLAIRE FIN
setInfo "2023"
'SET PHOTO D'IDENTITÉ
Application.SendKeys "{TAB}", True
' *** ÉLÈVE ***
'SET SEXE M ou F ?
'setInfo .Range("a" & line).Value
If UCase(.Range("a" & line).Value) = "M" Then
Application.SendKeys "x", True
ElseIf UCase(.Range("a" & line).Value) = "F" Then
Application.SendKeys "{RIGHT}", True
Application.SendKeys "x", True
End If
'SET NOM DE FAMILLE
setInfo .Range("b" & line).Value
'SET PRÉNOM 1
setInfo .Range("c" & line).Value
'SET PRÉNOM 2
setInfo .Range("d" & line).Value
'SET PRÉNOM 3
setInfo .Range("e" & line).Value
'SET FORMATION MEF / SPECIALITE
Application.SendKeys "{TAB}", True
'SET CLASSE / DIVISION
Application.SendKeys "{TAB}", True
'SET DATE DE NAISSANCE
setInfo .Range("f" & line).Value
'SET COMMUNE DE NAISSANCE
setInfo .Range("g" & line).Value
'SET NATIONALITE
setInfo .Range("h" & line).Value
'SET CODE DEPARTEMENT DE NAISSANCE
setInfo .Range("i" & line).Value
'SET PAYS DE NAISSANCE
setInfo .Range("j" & line).Value
' *** ÉLÈVE ***
'On définit le répertoire d'enregistrement du fichier PDF final
savePDF .Range("c" & line).Value & "_" & .Range("b" & line).Value, "C:\Poubelle\Export\"
End With
Next
End Sub
'Pour se positionner sur le premier champ remplissable à l'ouverture du fichier
Sub fieldTab(amount As Integer)
Dim x As Integer
For x = 1 To amount
Application.SendKeys "{TAB}", True
Next
End Sub
'Pour remplir automatiquement les champs du PDF
Sub setInfo(info As String)
Application.SendKeys info, True
Application.SendKeys "{TAB}", True
End Sub
'Pour sauvegarder le fichier PDF rempli
Sub savePDF(fileName, folder As String)
'Raccourci pour ouvrir la boîte de dialogue IMPRIMER avec le raccourci ^(p)
Application.SendKeys "^(p)", True
'Délai d'attente pour que la fenêtre s'ouvre
Application.Wait Now + 0.00003
'Raccourci clavier pour valider l'imprimante (défini par défaut plutôt sur Microsoft PDF)
Application.SendKeys "~", True
'Délai d'attente pour que la fenêtre pour enregistrer le PDF s'ouvre
Application.Wait Now + 0.00003
'On place le curseur sur le champ nom de fichier avec le raccourci %(n)
Application.SendKeys "%(n)", True
'On inscris le nom du fichier que l'on souhaite pour enregistrer le fichier
Application.SendKeys fileName, True
'Délai d'attente pour que le nom du fichier soit bien renseigné
Application.Wait Now + 0.00003
'On valide l'enregistrement du fichier avec le raccourci %(e)
Application.SendKeys "%(e)", True
Application.Wait Now + 0.00003
'Confirmation en cas de fichier déjà existant
Application.SendKeys "%(o)"
'On attends que la fenêtre se ferme
Application.Wait Now + 0.00003
'Fermeture de l'onglet sur le navigateur avec le raccourci ^(W)
Application.SendKeys "^(W)", True
End Sub |
Partager