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 Subet 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 SubNi 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 Banzai64,
Merci bien pour ce que tu fais, ça fonctionne parfaitement.
Bonne soirée à toi.