Private Sub CommandButton1_Click()
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim CA As String 'déclare la variable CA (Chemin d'Accès)
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim O As Worksheet 'déclare la variable O (Onglet)
Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
Set CD = ThisWorkbook 'définit le classeur destination CD
Application.DisplayAlerts = False 'masque les messages d'Excel
For Each O In CD.Sheets 'boucle sur tous les onglets O du classeur destination
If O.Name <> "Accueil" Then O.Delete 'si le nom de l'onglet n'est pas "Accueil", supprime l'onglet
Next O 'prochain onglet de la boucle
Application.DisplayAlerts = True 'affiche les messages d'Excel
CA = CD.Path & "\" 'définit le chemin d'accès CA
On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligbe suivante)
Set CS = Workbooks("Données.xlsx") 'définit le classeur source CS (génère une erreur si ce classeur n'est pas ouvert)
If Err <> 0 Then 'condition : si une erreur a été générée
Err.Clear 'supprime l'erreur
Set CS = Workbooks.Open(CA & "Données.xlsx") 'définit le classeur source en l'ouvrant
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
For Each O In CS.Sheets 'boucle sur tous les onglets O du classeur source
O.Copy After:=CD.Sheets(CD.Sheets.Count) 'copy l'onglet de la boucle en dernière position dans le classeur destintion
Next O 'prochain onglet de la boucle
CD.Save 'sauve le classeur destination
CS.Close False 'ferme le classeur source sans enregistrer
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub