Option Explicit
Public derlig As Long
Sub Importer()
Dim wkSource As Workbook, wkDest As Workbook, ShA As Worksheet, ShB As Worksheet
Dim shC As Worksheet, Fichier As String
Application.ScreenUpdating = False
Fichier = ThisWorkbook.Path & "\INVENTAIRES.xlsx"
Set wkSource = Workbooks.Open(Fichier)
Set wkDest = ThisWorkbook
Set ShA = ActiveWorkbook.Sheets("INV")
Set ShB = wkDest.Sheets("BD ARTICLES")
Set shC = wkDest.Sheets(3)
derlig = shC.Range("f" & Rows.Count).End(xlUp).Row
With ShA
derlig = .Range("b" & Rows.Count).End(xlUp).Row
.Range("b24:e" & derlig).Copy ShB.Range("b7")
.Range("b24:b" & derlig).Copy shC.Range("b7")
.Range("f24:f" & derlig).Copy shC.Range("d7")
.Range("h24:h" & derlig).Copy shC.Range("e7")
End With
shC.Range("e7:e" & derlig).Value = shC.Range("e7:e" & derlig).Value
ActiveWorkbook.Close False
Call Codes
Application.DisplayAlerts = False
ThisWorkbook.Save
End Sub
Public Sub Codes()
Dim tbl As Range, ShB As Worksheet
Set Coll_Str = New Collection
Set ShB = Sheets("BD ARTICLES")
With ShB
DerLgn = .Cells(.Rows.Count, 2).End(xlUp).Row
DerCol = .Cells(6, .Columns.Count).End(xlToLeft).Column
Tablo = .Range(.Cells(7, 1), .Cells(DerLgn, DerCol)).Value
ReDim Tab_Ref(UBound(Tablo, 1), 1)
On Error Resume Next
For L = 1 To UBound(Tablo, 1)
Str_Search = IIf(Tablo(L, 3) <> "", Left(Tablo(L, 2), 2) & Left(Tablo(L, 3), 2), "")
Coll_Str.Add Str_Search, CStr(Str_Search)
If Err.Number = 0 Then
x = 1
For LL = 1 To UBound(Tablo, 1)
Str_Compare = Left(Tablo(LL, 2), 2) & Left(Tablo(LL, 3), 2)
If Str_Compare Like Str_Search Then
Tab_Ref(LL, 1) = Str_Compare & Format(x, "-0000")
x = x + 1
End If
Next LL
End If
Err.Clear
Next L
.Range("A7").Resize(UBound(Tab_Ref, 1), 1) = Tab_Ref
End With
Set Tablo = Nothing: Set Coll_Str = Nothing
End Sub