5 pièce(s) jointe(s)
Remplir Automatiquement un formulaire PDF à partir d'excel
Bonjour,
Après de multiples recherches, notamment sur ce forum, j'ai pu trouvé une solution pour générer un PDF formulaire (FDF plus exactement) automatiquement rempli à partir d'un classeur de données Excel, ici :
http://fredclo.free.fr/index.php?opt...d=16&Itemid=43
(solution proposée en MAJ en bas de page :
"ET MAINTENANT, une révolution pour remplir vos DAS 2. Une méthode bien plus simple pour la DAS 2 automatique !! il suffit d'un fichier Excel pour faire le fdf (pas plus de travail que le brouillon excel pour préparer sa DAS 2), c'est tout !!! CLIQUEZ ICI")
Les 2 PDF source :
Pièce jointe 442962
Pièce jointe 442966
Le fichier excel :
Pièce jointe 442970
Le code de la macro utilisée
Code:
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
|
Sub Sauvefdf()
Dim Chemin As String, Fichier As String, Temp As String, fdf As String, i As Integer, g As Integer
ActiveWorkbook.Save
Fichier = ActiveWorkbook.Path + "\" + ActiveWorkbook.Name
Chemin = ActiveWorkbook.Path
ChDir Chemin
Sheets("societe").Select
g = Range("C31") ' Cellule indiquant le nombre de feuillets
g = g - 1
ChDir Chemin
For i = 2 To g
Sheets("fdf" & i - 1).Select
Sheets("fdf" & i - 1).Copy After:=Sheets("fdf" & i - 1)
Sheets("fdf" & i - 1 & " (2)").Select
Sheets("fdf" & i - 1 & " (2)").Name = "fdf" & i
Range("A105").Select
ActiveCell.FormulaR1C1 = i + 1
Next i
For i = 0 To g
fdf = "fdf" & i
Sheets(fdf).Select
ActiveSheet.SaveAs Filename:=ActiveSheet.Name & "." & "fdf", FileFormat:=xlTextMSDOS, CreateBackup:=False
Next i
Temp = ActiveWorkbook.Name
Workbooks.Open Filename:=Fichier
Sheets("societe").Select
Workbooks(Temp).Close SaveChanges:=False
End Sub |
Cette méthode est cependant adapté à ces deux PDF joints précédemment.
J'aimerais adapter cette méthode pour remplir ce pdf : Pièce jointe 442956, à partir de cette base de donnée : Pièce jointe 443106
Plus largement, étant débutant en VBA, j'aimerais également comprendre davantage la signification et la traduction du code utilisé.
Merci d'avance pour votre aide :)
EDIT
J'ai réussi à adapter le code (je ne sais pas si il est optimal mais il fonctionne)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
Sub Sauvefdf()
ActiveWorkbook.Save
Fichier = ActiveWorkbook.Path + "\" + ActiveWorkbook.Name
Chemin = ActiveWorkbook.Path
ChDir Chemin
Sheets("fdf").Select
Sheets("fdf").Copy
Sheets("fdf").Name = "fdf"
fdf = "fdf"
Sheets(fdf).Select
ActiveSheet.SaveAs Filename:=ActiveSheet.Name & "." & "fdf", FileFormat:=xlTextMSDOS, CreateBackup:=False
Temp = ActiveWorkbook.Name
Workbooks.Open Filename:=Fichier
Sheets("data").Select
Workbooks(Temp).Close SaveChanges:=False
End Sub |
Problème résolu
Je reste cependant intéressé si quelqu'un souhaite proposer une optimisation et/ou m'expliquer le fonctionnement et la logique de ce code.
Merci :)