1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
Sub CopierLesLignesV2(ByVal FeuilleSource As Worksheet, ByVal TitreSource As Long, ByVal CritereFiltre1 As String, ByVal CritereFiltre2 As Integer, ByVal CritereFiltre3 As Date, ByVal FeuilleCible As Worksheet)
Dim DerniereLigneSource As Long
Dim DerniereLigneFiltreeSource As Long
Dim DerniereColonneSource As Long
Dim ColCritere1 As Long
Dim ColCritere2 As Long
Dim ColCritere3 As Long
Dim Airesource As Range
Dim DerniereLigneCible As Long
With FeuilleSource
DerniereLigneSource = .Cells(.Rows.Count, 1).End(xlUp).Row
DerniereColonneSource = .Cells(TitreSource, .Columns.Count).End(xlToLeft).Column
ColCritere1 = 1
ColCritere2 = 2
ColCritere3 = 3
Set Airesource = .Range(.Cells(TitreSource, 1), .Cells(DerniereLigneSource, DerniereColonneSource))
With Airesource
.AutoFilter Field:=ColCritere1, Criteria1:=CritereFiltre1
.AutoFilter Field:=ColCritere2, Criteria1:=CritereFiltre2
.AutoFilter Field:=ColCritere3, Operator:=xlFilterValues, Criteria1:=Array(2, CritereFiltre3)
End With
DerniereLigneFiltreeSource = .Cells(.Rows.Count, ColCritere1).End(xlUp).Row
If DerniereLigneFiltreeSource > TitreSource Then
DerniereLigneCible = FeuilleCible.Cells(.Rows.Count, 3).End(xlUp).Row
.Range(.Cells(TitreSource + 1, 1), .Cells(DerniereLigneSource, 7)).SpecialCells(xlCellTypeVisible).Copy FeuilleCible.Range("C" & DerniereLigneCible + 1)
'Else
' MsgBox "Aucune valeur !", vbCritical
End If
.ShowAllData
Set Airesource = Nothing
End With
End Sub |
Partager