VBA - Classement particulier dans liste INSEE

Bonjour à tous,

Je souhaite apporter quelques amélioration dans mon classeur sur l'onglet 0667.

Au niveau du classement des numéro de sécurité sociale, j'aurais souhaité que ces derniers soient classés ainsi :

  • Les hommes, puis les femmes, (numéros insee commençant par 1 puis par 2),
  • A l'intérieur de chaque sexe, du plus agé au plus jeune, ( les deuxième et troisième chiffre, année de naissance par ordre croissant.

Il aurait fallu que cette fonction soient greffée à la macro suivante (merci banzai64) :

Nettoyage (qui supprime les lignes à 0€) :

Sub Nettoyage()
Dim NbLg As Long

  Application.ScreenUpdating = False
  NbLg = Columns("B:L").Find(what:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
  Range("B18:L" & NbLg).Value = Range("B18:L" & NbLg).Value
  With Range("M18:M" & NbLg)
    .Formula = "=IF(OR(L18=0,L18=""""),"""",""X"")"
    .Value = .Value
    On Error Resume Next
    .SpecialCells(xlCellTypeBlanks).EntireRow.Delete
    On Error GoTo 0
    .ClearContents
  End With
End Sub

et InitialiseFormule (remet les formulaire en état) :

Sub InitialiseFormule()
  Application.ScreenUpdating = False
  Range("B18").Formula = "=IF(Personnels!A1="""","""",MID(Personnels!A1,2,1)&"" ""&MID(Personnels!A1,3,2)&"" ""&MID(Personnels!A1,5,2)&"" ""&MID(Personnels!A1,7,2)&"" ""&MID(Personnels!A1,9,3)&"" ""&MID(Personnels!A1,12,3)&"" ""&CHAR(124)&"" ""&MID(Personnels!A1,15,2))"
  Range("C18").Formula = "=Personnels!F1"
  Range("D18").Formula = "=IF(INDIRECT(""Planning!""&ADDRESS(1,ROW()-15))="""","""",INDIRECT(""Planning!""&ADDRESS(1,ROW()-15)))"
  Range("E18").Formula = "=Personnels!C1"
  Range("F18").Formula = "=IF(D18="""","""",INDIRECT(""Planning!""&ADDRESS(33,ROW()-15)))"
  Range("G18").Formula = "=IF(D18<>"""",10,"""")"
  Range("H18").Formula = "=IF(D18<>"""",F18*G18,"""")"
  Range("I18").Formula = "=IF(D18="""","""",INDIRECT(""Planning!""&ADDRESS(34,ROW()-15)))"
  Range("J18").Formula = "=IF(G18<>"""",40,"""")"
  Range("K18").Formula = "=IF(G18<>"""",I18*J18,"""")"
  Range("L18").Formula = "=IF(D18<>"""",H18+K18,"""")"
  Range("B18:L18").AutoFill Destination:=Range("B18:L181"), Type:=xlFillSeries
End Sub

Ni connaissant pas grand chose en VBA, je vous remercie par avance de toute l'aide apportée, je joint en PJ un fichier.

Bien cordialement.

Bonjour

A tester

Bonjour Banzai64,

Merci bien pour ce que tu fais, ça fonctionne parfaitement.

Bonne soirée à toi.

Rechercher des sujets similaires à "vba classement particulier liste insee"