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 :
das2i.pdf
das2t.pdf
Le fichier excel :
Déclaration des honoraires 2009.xls
Le code de la macro utilisée
Cette méthode est cependant adapté à ces deux PDF joints précédemment.
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 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
J'aimerais adapter cette méthode pour remplir ce pdf : 13750.pdf, à partir de cette base de donnée : Test macro.xlsx
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)
Problème résolu
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 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
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![]()
Partager