Macro Excel, transfert données vers template Word
L
Salut tout le monde,
Je suis actuellement bloqué dans le développement d'une macro pour transférer des données d'une feuille Excel vers un modèle Word avec signet.
Pour l'instant, le principal de la macro fonctionne, les données sont bien transférées vers le Template mais j'ai plusieurs problèmes que je n'arrive pas à résoudre depuis hier, et j'ai beaucoup essayé depuis.
1/ Lorsque je veux enregistrer le document au format PDF, ma macro gardera les informations collées dans le modèle après avoir fermé le docx, par conséquent, le prochain fichier pdf aura les informations de deux lignes au lieu d'une. J'ai essayé d'utiliser une fonction d'exportation mais j'ai eu le même résultat. Avez-vous une idée de la façon dont je pourrais modifier mon code pour laisser le modèle vide après l'enregistrement dans un fichier pdf ?
2/ Pour nommer le fichier PDF, j'ai défini une variable différente mais cela semble ne pas fonctionner, en effet, il semble que le nom soit défini avec les informations des cellules N-1 au lieu des informations de la cellule N, aucune idée à résoudre il ? De plus, je n'arrive pas à comprendre comment mettre les informations YEAR dans le nom du fichier (j'ai une erreur de compatibilité, je pense que c'est à cause du format des données)
3/ Pour finir, je souhaite mettre en place un SI & Alors pour ne prendre en compte que la ligne concernant l'année en cours, je n'ai pas trouvé comment le faire fonctionner efficacement, pourriez-vous me faire une suggestion ?
Vous pouvez trouver mon code VBA ici
Macro1 Macro
'
Option Explicit
'Filepath to the data and template
Const FilePath As String = "C:\Users\aguy\OneDrive\Desktop\fiches\Templates\" & "Template macro.docx"""
Dim wd As New Word.Application
Dim NomCell As Range
Sub CreateWordDocuments()
'Defini a counter
Dim i As Integer
Dim prenom As String
Dim nom As String
Dim interviewyear As Date
i = 0
'create copy of Word in memory
Dim doc As Word.Document
wd.Visible = True
Dim NomRange As Range
'create a reference to all the people
Range("A2").Select
Set NomRange = Range(ActiveCell, ActiveCell.End(xlDown))
'for each person in list
For Each NomCell In NomRange
'open a document in Word
Set doc = wd.Documents.Open("C:\Users\aguy\OneDrive\Desktop\fiches\Templates\" & "Template macro.docx")
'go to each bookmark and type in details
'If Year(Cells(NomCell, 14)) >= Year(Date) Then
CopyCell "Age", 4
CopyCell "Ancienneté", 6
CopyCell "Projet", 9
CopyCell "Grade", 10
CopyCell "Rôle", 11
CopyCell "Date_de_départ_prévue", 12
CopyCell "Carrière_manager", 13
CopyCell "Motif_départ", 16
CopyCell "Motif_départ_2", 17
CopyCell "Points_positifs_expérience", 18
CopyCell "Point_négatifs_expérience", 19
CopyCell "Situation_future_entreprise_ou_autre", 20
CopyCell "Commentaire_RRH", 21
CopyCell "Prénom", 2
CopyCell "Site", 7
CopyCell "Service_line", 8
CopyCell "Nom", 1
CopyCell "Date_entretien_de_départ", 15
CopyCell "RRH_entretien", 16
prenom = Cells(NomCell, 2).Value
nom = Cells(NomCell, 3).Value
'interviewyear = Cells(NomCell, 15).Date
'save and close this document
doc.SaveAs2 FilePath & nom & " " & prenom & interviewyear & ".pdf", wdExportFormatPDF
doc.Close
i = i + 1
Next NomCell
wd.Quit
MsgBox "The work is done, " & i & " files had been created in " & FilePath & "!"
'End If
End Sub
Sub CopyCell(BookMarkNom As String, ColumnOffset As Integer)
'copy each cell to relevant Word bookmark
wd.Selection.Goto What:=wdGoToBookmark, Name:=BookMarkNom
wd.Selection.TypeText NomCell.Offset(0, ColumnOffset).Value
End SubL
Quelqu'un aurait une idée s'il vous plait ?
Je bloque vraiment :/
Merci