Bonsoir,
Merci bien à tous les deux, c'est vraiment sympa de votre part.
Pour Banzai64, j'ai commencé à mettre les mains dans le code car en fait dans l'avenir chaque affectation aura ce fichier mais je bloquerai cette boite déroulante. Exemple l'affectation 1 ne doit pas accéder aux informations de l'affectations 2. Je garde cette boite déroulante pour moi afin d'avoir un visuel sur tous les personnels > 800. En fait je ne vais pas faire 40 fichiers différents, mais 1 seul avec la boite déroulante bloqué pour l'affectation concerné. Et puis pour les futures MAJ du classeur ce sera plus facile pour redistribuer.
Sans vouloir trop te demander ce serait possible que tu puisses remettre le bouton initialiser le formulaire avec le code VBA correspondant ? Car je ne parvient pas à le faire correctement.
Le but de ce bouton étant que si par exemple une fois que la personne qui à fini de renseigner le planning, clique sur le bouton "Formater pour l'impression" se rends compte qu'elle à oublié des saisies dans le planning, le fait "d'initialiser le formulaire" permet de retourner sur planning et une fois fini de cliquer sur "formater pour l'impression" pour prendre en compte les changement.
Je sais pas si mes explications sont claires.
Par ailleurs, le bon code avec les dernières mises à jours notamment au niveau du formatage numéro INSEE et petites modifications que tu as pû effectuer ultérieurement sont dans le code suivant :
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(34,ROW()-15)))"
Range("G18").Formula = "=IF(D18<>"""",10,"""")"
Range("H18").Formula = "=IF(D18<>"""",F18*G18,"""")"
Range("I18").Formula = "=IF(D18="""","""",INDIRECT(""Planning!""&ADDRESS(35,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
et
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
NbLg = Columns("B:L").Find(what:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
With Range("M18:M" & NbLg)
.Formula = "=LEFT(B18,1)&MID(B18,3,2)*1"
.Value = .Value
Range("A18:M" & NbLg).Sort key1:=Range("M18"), order1:=xlAscending, dataoption1:=xlSortNormal, Header:=xlNo
.ClearContents
End With
End Sub
Merci bien par avance et bonne soirée.
Cordialement.