Sub Macro1()
Dim d1 As Date 'déclare la variable d1 (Date 1)
Dim d2 As Date 'déclare la variable d1 (Date 2)
Dim cl As String 'déclare la variable cl (CLient)
Dim ad As Range 'déclare la variable ad (plage Ancienne Données)
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 dest As Range 'déclare la variable dest (cellule de DESTination)
With Sheets("bordereau") 'prend en compte l'onglet "bordereau"
d1 = .Range("C3").Value 'définit la date d1
d2 = .Range("C4").Value 'définit la date d1
cl = .Range("D3").Value 'définit le client cl
Set ad = .Range("A7").CurrentRegion 'définit la plage des anciennes données
If ad.Rows.Count > 1 Then 'condition : si cette plage contient plus d'une seule ligne
Set ad = ad.Offset(1, 0).Resize(ad.Rows.Count - 1, ad.Columns.Count) 'redéfinit la plage (sans la première ligne)
ad.Clear 'efface les anciennes données
End If 'fin de la condition
End With 'fin de la prise en compte de l'onglet "bordereau"
With Sheets("base") 'prend en compte l'onglet "Base"
dl = .Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne A
Set pl = .Range("A2:A" & dl) 'définit la plage pl
For Each cel In pl 'boucle sur toutes les cellules de la plage pl
If cel.Value >= d1 And cel.Value <= d2 And cel.Offset(0, 4).Value = cl Then 'condition : si la date 1, al date 2 et le nom du client sont correspondants
Set dest = Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination
.Range(cel, cel.Offset(0, 3)).Copy dest 'copie et colle les cellules correspondante des colonnes A, B, C et D dans dest
End If 'fin de la condition
Next cel 'prochaine cellule de la boucle
End With 'fin de la prise en compte de l'onglet "base"
End Sub