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
|
Sub Bouton4_Comparer()
Dim Sem1 As Byte, Sem2 As Byte
Dim LastLig As Long, i As Long
Application.ScreenUpdating = False
'Récupération des semaines 1 et 2
With ThisWorkbook.Worksheets("Feuil2")
Sem1 = .Range("A3")
Sem2 = .Range("B3")
End With
With ThisWorkbook.Worksheets("Feuil3")
'On efface la feuille de destination
.UsedRange.Clear
'On copie l'ensemble des données de la feuille source vers la feuille destination
ThisWorkbook.Worksheets("Feuil1").UsedRange.Copy .Range("A1")
'On filtre sur les semaines différentes de Sem1 et de Sem2
LastLig = .Cells(.Rows.Count, 1).End(xlUp).Row
.Range("A1:AY" & LastLig).AutoFilter Field:=51, Criteria1:="<>" & Sem1, Criteria2:="<>" & Sem2, Operator:=xlAnd
'On efface les lignes ne correspondants pas aux 2 semaines
If .Range("AY1:AY" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then .Range("AY2:AY" & LastLig).SpecialCells(xlCellTypeVisible).EntireRow.Delete
.AutoFilterMode = False
'.ShowAllData
'On marque par un X les lignes doublons (sur Ref et sur MEC)
With .Range("AZ2:AZ" & LastLig)
.Formula = "=If(COUNTIFS($B$2:$B$" & LastLig & ",$B2,$W$2:$W$" & LastLig & ",$W2)=2,""X"","""")"
.Value = .Value
End With
'On efface les lignes doublons (filtre sur les X de marquage
.Range("A1:AZ" & LastLig).AutoFilter Field:=52, Criteria1:="X"
If .Range("AZ1:AZ" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then .Range("AZ2:AZ" & LastLig).SpecialCells(xlCellTypeVisible).EntireRow.Delete
.AutoFilterMode = False
'.ShowAllData
End With
End Sub |