Sub Rempir()
Dim DL1%, DL2, TabloIN, TabloOUT, Colonne%, Mat, Nom, Dat, Res%, Don%
Application.ScreenUpdating = False
DL1 = Sheets("Données").Range("A65500").End(xlUp).Row
DL2 = Sheets("Résultats").Range("A65500").End(xlUp).Row
Sheets("Résultats").Range("D2:I" & DL2).ClearContents
TabloIN = Sheets("Données").Range("A1:D" & DL1) ' Transfert Données dans array
TabloOUT = Sheets("Résultats").Range("A1:I" & DL2) ' Transfert Résultats dans array
For Res = 2 To DL2
Colonne = 4
Mat = TabloOUT(Res, 1): Nom = TabloOUT(Res, 2): Dat = TabloOUT(Res, 3)
For Don = 2 To DL1
If TabloIN(Don, 1) = Mat Then ' 3 If globalement plus rapide qu'un If et 3 And
If TabloIN(Don, 2) = Nom Then
If TabloIN(Don, 3) = Dat Then
TabloOUT(Res, Colonne) = TabloIN(Don, 4)
Colonne = Colonne + 1
End If
End If
End If
Next Don
Next Res
Sheets("Résultats").Range("$A$1").Resize(UBound(TabloOUT, 1), UBound(TabloOUT, 2)) = TabloOUT ' Restitution array
Application.ScreenUpdating = True
End Sub