Public Sub Codes()
Erase Tab_Ref
Set Coll_Str = New Collection
I = 1
Set ShB = Sheets("BD ARTICLES")
ReDim Tab_Ref(UBound(Tablo, 1), 1)
On Error Resume Next 'gestion des erreurs eventuelles
For L = I To UBound(Tablo, 1) 'pour chaque ligne du tableau des donnees
Str_Search = IIf(Tablo(L, 3) <> "", UCase(Left(Tablo(L, 2), 2) & Left(Tablo(L, 3), 2)), "") 'on récupére si la Colonne 3 n'est pas vide les deux premiers caracteres des Colonne "B"(2) et "C"(3)
Coll_Str.Add Str_Search, CStr(Str_Search) 'on entre la variable ainsi définie dans la Collection des références
If Err.Number = 0 Then 'Si réference Non encore référencée
x = 1 'on incremente la variable
For LL = I To UBound(Tablo, 1) 'puis pour chaque ligne du tableau
Str_Compare = UCase(Left(Tablo(LL, 2), 2) & Left(Tablo(LL, 3), 2)) 'on va récupérer les deux premiers caracteres des Colonne "B"(2) et "C"(3)
If Str_Compare Like Str_Search Then 'on compare les deux variables si Ok
Tab_Ref(LL, 1) = Str_Compare & Format(x, "-0000") 'Récupére dans le tableau des références la Variable formatee
x = x + 1: I = I + 1: L = I 'on incremente les Variables
End If
Next LL
End If
Err.Clear 'on efface l'erreur eventuelle
Next L
With Sheets("BD ARTICLES").Range("A7") 'a partir de la cellule "A7"
.Resize(UBound(Tab_Ref, 1), 1) = Tab_Ref 'on redimensionne la plage Cible des références
With .Resize(UBound(Tab_Ref, 1), 5).Borders 'puis on redimensionne la plage x Lignes 5 colonnes
.LineStyle = xlContinuous 'on formate les bordures
.Weight = xlThin 'Idem
End With
End With
Set Tablo = Nothing: Set Coll_Str = Nothing
End Sub