Dans cet article, nous allons créer une macro pour trier les données de la feuille par anniversaire et nous ne prendrons pas en compte l’année lors du tri des données.

Les données brutes se composent de deux colonnes, l’une contient le nom et la deuxième colonne contient la date de naissance.

RawData

Explication logique

Nous avons créé une macro, «sorting_names_by_birthday» qui triera les données.

Dans cette macro, on insère d’abord des formules dans la colonne C où l’on trouve la différence entre la date de naissance et la première date de leur année de naissance. Ensuite, nous trions les données par nom pour trier les données par ordre alphabétique de sorte que si deux candidats ont la même date de naissance, leurs noms doivent apparaître par ordre alphabétique. Ensuite, nous trions les données en calculant la différence par ordre croissant pour trier les données par anniversaire.

Après avoir trié les données, pour supprimer les formules de la colonne C, supprimez toute la colonne C.

Pour exécuter la macro, appuyez sur Alt + F8 ou allez dans l’onglet Développeur> cliquez sur Macro.

ArrowAfterRunningMacro

Veuillez suivre ci-dessous pour le code

Option Explicit

Sub sorting_names_by_birthday()

'Disabling screen update

Application.ScreenUpdating = False

Dim Last_Row As Long

'Finding the last row

Last_Row = ActiveCell.SpecialCells(xlCellTypeLastCell).Row

Range("C16").Select

'Getting the days of the year

'Subtracting first date of the year from date of birthday

ActiveCell.FormulaR1C1 = "=RC[-1]-DATE(YEAR(RC[-1]),1,1)"

'Dragging the formula

Range("C16:C" & Last_Row).Select

Selection.FillDown

'Sorting the data first by column A then by column C

Range("A15").CurrentRegion.Sort _

key1:=Range("C15"), order1:=xlAscending, _

key2:=Range("A15"), order2:=xlAscending, _

Header:=xlYes



'Deleting the column C

Columns("C").Delete

Range("A15").Select

End Sub

Si vous avez aimé ce blog, partagez-le avec vos amis sur Facebook et Facebook.

Nous aimerions avoir de vos nouvelles, faites-nous savoir comment nous pouvons améliorer notre travail et le rendre meilleur pour vous. Écrivez-nous à [email protected]