Bonjour Lili8889,
Pour info trop de MFC tue les MFC dans votre cas, le mieux je pense, est d'utiliser un peu de VBA
Je n'ai pas touché à la feuille BASE, mais il faudra supprimer la quasi totalité des MFC
Ce que j'ai fait :
J'ai donc renommé votre feuille "JF" en "Params", feuille que vous pouvez masquer
Dans cette feuille j'ai créé un tableau des différents type d'absence, en essayant de reproduire les couleur et la police souhaitée (que vous pouvez modifier)
J'ai supprimé la quasi totalité des MFC de la feuille "MAI 21"
Ensuite dans ThisWorkbook, j'ai mis ce code, qui permet de vérifier si une modification est faite sur une feuille planning et si elle est au niveau de la colonne entre "Prise de service" et "Fin de service"
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
' Vérifier que la feuille modifier est bien un planning
' sinon on sort
If Sh.Range("C1").Value <> Year(Date) Then Exit Sub
' Vérifier si modification d'unbe absence : Ligne 7 colonne de gauche = Prise de service
' Sinon on sort
If InStr(1, Sh.Cells(7, Target.Column - 1), "service") = 0 Then Exit Sub
' Ok, appeler la sub de Mise en forme de la/des cellule(s)
Call MeF_Cellule(Target)
End Sub
J'ai aussi créé un module, qui reproduit la mise en forme des cellules absence
Comment cela fonctionne :
1) Je vérifie si la saisie contient une valeur, sinon je réinitialise le format des 3 cellules de la ligne
2) Je recherche dans la plage nommée le type d'absence saisi, si il est trouvé, je reproduit le format de la cellule (couleur et police)
Sub MeF_Cellule(Target As Range)
Dim Cel As Range
Dim TypeFind As Range
' Pour chaque cellule modifiée
For Each Cel In Target
' Si le contenu est vide
If Target = "" Then
' Réinitialiser le format sur les 3 cellules
With Target.Offset(0, -1).Resize(1, 3)
.Font.Bold = False
.Font.ColorIndex = xlAutomatic
.Font.FontStyle = "Normal"
.Font.Size = 11
.Interior.Color = xlNone
End With
Else
' Chercher le tpye d'absence dans la plage nommée "TypeAbs" de la feuille Params
Set TypeFind = [TypeAbs].Find(What:=Target.Value, LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False)
' Si cellule trouvée
If Not TypeFind Is Nothing Then
' Appliquer le format sur les 3 cellules
With Target.Offset(0, -1).Resize(1, 3)
.Interior.Color = TypeFind.Interior.Color
.Font.Bold = TypeFind.Font.Bold
.Font.Color = TypeFind.Font.Color
.Font.Size = TypeFind.Font.Size
.Font.FontStyle = TypeFind.Font.FontStyle
End With
End If
End If
Next Cel
End Sub
Voilà, comme cela, plus de problème de MFC qui bougent avec les copier/coller
On peut peaufiner en ajoutant du code pour les valeurs des totaux ou autre (à voir)
Voici le fichier
@+