Sub Macro1()
Dim ch As String 'déclare la variable ch(CHemin d'accès)
Dim cs As Workbook 'déclare la variable cs(Classeur Source)
Dim dl As Integer 'déclare la variable dl(Dernière Ligne)
Dim pl As Range 'déclare la variable pl(PLage)
Dim cel As Range 'déclare la variable cel(CELlule)
Dim cc As Workbook 'déclare la variable cc(Classeur Cible)
Dim dest As Range 'déclare la variable dest(cellule de DESTination)
Application.ScreenUpdating = False 'masque les changements à l'écran
ch = ThisWorkbook.Path & "\" 'définit le chemin d'asccès ch
Set cs = ThisWorkbook 'définit le classeur source
With cs.Sheets("Sheet1") 'prend en compte l'onglet "Sheet1" du classseur source
dl = .Cells(Application.Rows.Count, 4).End(xlUp).Row 'définit la dernière ligne éditée de la colonne 4 (=D)
Set pl = .Range("D2:D" & dl) 'définit la plage pl
End With 'fin de la prise en compte de l'onglet "Sheet1" du classseur source
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
Set cc = Workbooks(ch & cel.Value & ".xlsx") 'définit le classeur cible (génère une erreur si le classeur n'est pas ouvert)
If Err <> 0 Then Err = 0 Else GoTo suite 'si une erreur a été générée, annule l'erreur, sinon va à l'étiquette "suite"
Workbooks.Open (ch & cel.Value & ".xlsx") 'ouvre le classeur (génère une erreur si le classeur n'existe pas)
If Err <> 0 Then 'condition : si une erreur a été générée
Err = 0 'annule l'erreur
Workbooks.Open (ch & "template.xlsx") 'ouvre le fichier "Template.xlsx"
ActiveWorkbook.SaveAs (ch & cel.Value & ".xlsx") 'enregisre le fichier sous : nom de la cellule
Workbooks("template.xlsx").Close SaveChanges:=False 'ferme le classeur Template.xlsx sans sauver
End If 'fin de la condition
suite: 'étiquette
On Error GoTo 0 'annule la gestion des erreurs
Set cc = ActiveWorkbook 'définit le classeur cible
Set dest = cc.Sheets("Sheet1").Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination dans l'onglet "Sheet1" du classeur cible
cel.EntireRow.Copy dest 'copie la ligne enière de la cellule et la colle dans dest
cc.Close SaveChanges:=True 'ferme le classeur cible en sauvant les données
Next cel 'prochaine cellule de la boucle
Application.ScreenUpdating = True 'affiche les changements à l'écran
MsgBox "Traitement des données terminé !" 'message
End Sub