Private Sub CommandButton1_Click()
Dim OF As Worksheet 'déclare la variable OF (Onglet Fiche)
Dim PL As Range 'déclare la variable PL (PLage)
Dim BD As Worksheet 'déclare la variable BD (onglet Base de Données)
Dim TP(0 To 5) As String 'déclare la variable TP (Tableau des Plages)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)
Dim I As Byte 'déclare la variable I (Incrément)
Set OF = Worksheets("Rapport") 'définit l'onglet OF
Set PL = Application.Union(OF.Range("E4:G4"), OF.Range("E5"), OF.Range("E8:G8"), OF.Range("E9:G9"), OF.Range("E10:G10"), OF.Range("E11:G11"), OF.Range("E12:G12")) 'définit la plage PL
Set BD = Worksheets("Base de données") 'définit l'onglet BD
OF.Copy after:=OF 'copy l'ongelt OF après lui-même
ActiveSheet.Name = "Rapport " & CStr(Day(Date)) & "_" & CStr(Month(Date)) & "_" & CStr(Year(Date)) 'renomme l'onglet actif
TP(0) = "E4:G4" 'définit la plage 0
TP(1) = "E8:G8" 'définit la plage 1
TP(2) = "E9:G9" 'définit la plage 2
TP(3) = "E10:G10" 'définit la plage 3
TP(4) = "E11:G11" 'définit la plage 4
TP(5) = "E12:G12" 'définit la plage 5
Set DEST = BD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0) 'définit la cellule de destination DEST
For I = 0 To 5 'boucle sur les 5 colonnes de la base de donnée
DEST.Offset(0, I).Value = OF.Range(TP(I)).Value 'récupère les données de la fiche
Next I 'prochaine colonne de la boucle
PL.ClearContents 'vide le contenu de la fiche
End Sub