Re-,
Voici le code modifié dans ton fichier : (Tri selon urgente, puis Date de création)
Sub tri_liste_perso()
Dim Num_List As Byte
On Error Resume Next
Num_List = Application.GetCustomListNum(Array("URGENT", "Rapidement", "Normal"))
'on récupère le numéro de la liste personnelle dans Outils/Options/Listes Persos
If Num_List = 0 Then
' Si elle n'existe pas
Application.AddCustomList ListArray:=Array("URGENT", "Rapidement", "Normal")
' on ajoute la liste personnelle
Num_List = Application.CustomListCount
' on récupère le numéro de la liste personnelle
' tout ajout de liste personnelle étant à la fin, ce sera donc la dernière
End If
Range("CbProjets").Sort Key1:=Range("CbProjets[[#Headers],[PRIORITÉ]]"), Order1:=xlAscending, Key2:=Range("CbProjets[[#Headers],[DATE DE CREATION]]") _
, Order2:=xlAscending, Header:=xlGuess, OrderCustom:=Num_List + 1
' On effectue le tri, avec pour première clé, l'urgence, et deuxième, la date de création
' Comme la première (Nouvelle Liste) n'est pas comptabilisée, on ajoute 1 à Num_List
' Pour le faire directement sur la feuille, Données/Trier, Lignes de titres : Oui
' Choisir "Priorité", et dans Ordre, "Liste personnalisée", choisir URGENT, Rapidement, Normal....
End Sub
Ce code va se dérouler dès que tu mets une urgence dans la colonne priorité via cet évènement :
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("CbProjets[PRIORITÉ]")) Is Nothing Then
Call Tri_liste_perso
End If
End Sub
Le fichier :