Option Explicit
Sub test2()
Dim d As Workbook 'déclare la variable d (classeur Début)
Dim f As Workbook 'déclare la variable f (classeur Fin)
Dim od As Object 'déclare la variable od (Onglet Début)
Dim of As Object 'déclare la variable of (Onglet Fin)
Dim dl As Long 'déclare la variable dl (Dernière Ligne)
Dim cel As Range 'déclare la variable cel (CELlule)
Set d = Workbooks("debut.xlsm") 'définit le classeur début (à adapter à ton cas)
Set f = Workbooks("fin.xlsm") 'définit le classeur fin (à adapter à ton cas)
Set od = d.Sheets("Feuil1") 'définit l'onglet début (à adapter à ton cas)
Set of = f.Sheets("feuil1") 'définit l'onglet fin (à adapter à ton cas)
dl = od.Cells(Application.Rows.Count, 5).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 5 (=E) de l'onglet "Feuil1" du classeur "debut.xlsm"
od.Range("E13:E" & dl).Copy
of.Range("A1").PasteSpecial (xlPasteValues) 'copie les données de la colonne E et les colle dans A1 du classeur "fin.xlsm"
od.Range("K13:K" & dl).Copy
of.Range("B1").PasteSpecial (xlPasteValues) 'copie les données de la colonne K et les colle dans B1 du classeur "fin.xlsm"
For Each cel In of.Range("B1:B" & dl - 12) 'boucle sur toutes les cellules cel de la colonne B de l'onglet "Feuil1" du classeur "fin.xlsm"
If cel.Value <> "" Then 'condition : si la cellule n'est pas vide
cel.Offset(0, 1).Value = Split(cel.Value, "|")(1) 'récupère le texte après la bare (|) dans la colonne C
cel.Value = Split(cel.Value, "|")(0) 'récupère le texte avant la barre (|) dans la colonne B
End If 'fin de la condition
Next cel 'prochaine cellule de la boucle
Application.CutCopyMode = False 'masque le clignotement des cellules copiées
'***
'tri
'***
f.Activate
of.Activate
of.Sort.SortFields.Clear
of.Sort.SortFields.Add Key:=Range("B1:B30") _
, SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
of.Sort.SortFields.Add Key:=Range("A1:A30") _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With of.Sort
.SetRange Range("A1").CurrentRegion
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'*******
'fin tri
'*******
of.Range("A1:C" & of.Cells(Application.Rows.Count, 2).End(xlUp).Row).Name = "test" 'nomme la plage
End Sub