Peut-être un problème windows / mac, je suis en version windows excel 2010...
Attention si tu veux utiliser mon code et que ça marche il faudra que tu aies aussi la même structure de fichier que moi
Je te passe donc le code:
Sub Nouvel_employe_CDICDD()
der_lig = Range("A4").End(xlDown).Row - 1
Rows(5).Insert Shift:=xlDown, CopyOrigin:=xlfromabove
Range("A5") = InputBox("Saisir le nom du nouvel employé.")
Range("B5") = InputBox("Quel est son type de contrat? (CDI/CDD)")
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add Key:=Range _
("B4:B" & der_lig + 1), SortOn:=xlSortOnValues, Order:=xlAscending, CustomOrder:= _
"CDI,CDD", DataOption:=xlSortNormal
ActiveSheet.Sort.SortFields.Add Key:=Range _
("A4:A" & der_lig + 1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("PLANNING SALARIES").Sort
.SetRange Range("A4:AJ" & der_lig + 1)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
Et un aperçu écran:
Et une explication du code:
En fait il s'agit d'un tri à plusieurs niveaux (on tri d'abord d'après le premier critère, puis l'autre, puis l'autre...), donc nous on met le tri d'après le type de contrat en premier, pour bien séparer CDI et CDD, ça se fait via la fonction "ActiveSheet.Sort.SortFields.Add"
La petite différence avec l'autre tri c'est qu'on utilise pas un simple tri de A à Z, on utilise un tri suivant une liste personnalisée, c'est pour ça qu'on a CustomOrder:= "CDI,CDD" qui vient s'ajouter aux critères de filtres, je veux d'abord les CDI, puis les CDD, comme sur le fichier initial
Le reste est identique, j'ai juste rajouté une Inputbox à un endroit