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 45 46 47
| Option Explicit
Sub Extraction()
Dim WB_Principal As Workbook, classeur3 As Workbook
Dim Ws As Worksheet, feuil2 As Worksheet, feuil3 As Worksheet
Dim LastLig As Long, LastLig1 As Long
Dim i As Long
Dim maPlage As Range, maPlage1 As Range
Application.ScreenUpdating = False
' Amène le classeurs cible en avant plan, celui-ci devient le [ ActiveWorkbook ]
Set WB_Principal = ActiveWorkbook
Set feuil2 = WB_Principal.Worksheets("J+5")
Set classeur3 = Workbooks.Open("C:\Users\A172243\Desktop\Chafik\Fichier Stock.xlsx", _
False, True)
Set Ws = classeur3.Worksheets("Feuil1")
With Ws
.AutoFilterMode = False
LastLig = .Cells(.Rows.Count, "B").End(xlUp).Row
With Ws.Range("A1:CZ" & LastLig)
.AutoFilter Field:=4, Criteria1:=Array( _
"190", "191", "192", "193", "194", "195", "196", "197", "198", "199", "280", "289"), Operator _
:=xlFilterValues
For i = 5 To feuil2.Range("D65536").End(xlUp).Row
.AutoFilter Field:=2, Criteria1:=feuil2.Range("B" & i)
If Ws.Range("B5:B" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then
Set maPlage = Ws.Range("AH2:AH,AK2:AK,AQ2:AQ,AT2:AT,AW2:AW,AZ2:AZ,BC2:BC,BF2:BF,BI2:BI,BL2:BL,BO2:BO,H2:H" & LastLig)
Set maPlage1 = feuil2.Range("X5:X,Y5:Y,Z5:Z,AA5:AA,AB5:AB,AC5:AC,AD5:AD,AE5:AE,AF5:AF,AG5:AG,AH5:AH,AI5:AI,AJ5:AJ" & LastLig)
maPlage.SpecialCells(xlCellTypeVisible).Copy Destination:=maPlage1
Else
feuil2.Range("X" & i & ":AJ" & i).ClearContents
End If
Next i
End With
.AutoFilterMode = False
End With
Exit Sub
Set feuil2 = Nothing
End Sub |
Partager