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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
| Sub bliblil()
Dim wb As Workbook
Dim wb2 As Workbook
'Contrat
Set wb = GetObject("blabla.xlsx")
wb.Activate
Nb_Lignes = wb.Sheets(1).UsedRange.Rows.Count
MsgBox Nb_Lignes
'Affectation
Set wb2 = GetObject("blabla2.xlsx")
wb2.Activate
Nb_Lignes2 = wb2.Sheets(1).UsedRange.Rows.Count
wb.Sheets(1).Range("A2:A" & Nb_Lignes).AdvancedFilter Action:=xlFilterInPlace, Unique:=True
Dim plage As Range
Dim plage2 As Range
Set plage = wb.Sheets(1).Range("A2:A" & Nb_Lignes).SpecialCells(xlCellTypeVisible)
wb.Sheets(1).ShowAllData
Dim pl
For Each cell In plage
For i = 2 To Nb_Lignes2
If wb2.Sheets(1).Range("A" & i).Value = cell.Value _
And wb2.Sheets(1).Range("D" & i).Value = wb.Sheets(1).Range("D" & cell.Row).Value _
And wb2.Sheets(1).Range("E" & i).Value = wb.Sheets(1).Range("E" & cell.Row).Value Then
wb.Sheets(1).Range("M" & cell.Row).Value = wb2.Sheets(1).Range("D" & i).Value
wb.Sheets(1).Range("N" & cell.Row).Value = wb2.Sheets(1).Range("E" & i).Value
wb.Sheets(1).Range("O" & cell.Row).Value = wb2.Sheets(1).Range("F" & i).Value
wb.Sheets(1).Range("P" & cell.Row).Value = wb2.Sheets(1).Range("G" & i).Value
ElseIf wb2.Sheets(1).Range("A" & i).Value = cell.Value _
And (wb2.Sheets(1).Range("D" & i).Value <> wb.Sheets(1).Range("D" & cell.Row).Value _
Or wb2.Sheets(1).Range("E" & i).Value <> wb.Sheets(1).Range("E" & cell.Row).Value) Then
wb.Sheets(1).Activate
wb.Sheets(1).Range("A" & cell.Row + 1).Select
Selection.EntireRow.Insert , CopyOrigin:=xlFormatFromLeftOrAbove
wb.Sheets(1).Range("A" & cell.Row).Copy
wb.Sheets(1).Paste Destination:=wb.Sheets(1).Range("A" & cell.Row + 1)
i = i + 1
End If
Next i
Next cell
End Sub |