Bonjour,
Sub AjoutSalarié()
Dim sa$, i%, xyz%
sa = Right(Application.Caller, 1)
i = 6: xyz = 87
With ActiveSheet
Do
i = i + 1
If .Cells(i, 3).Interior.Color <> .Cells(i - 1, 3).Interior.Color Then
xyz = xyz + 1
If sa = Chr(xyz) Then
xyz = i
Exit Do
End If
End If
Loop While .Cells(i, 3) <> ""
.Cells(xyz, 3).Resize(, 11).Insert xlShiftDown
End With
End Sub
Une seule procédure, affectée aux deux boutons. Les boutons sont renommés AjoutY et AjoutZ.
La macro identifie le bouton appelant par le "Y" ou "Z" qui termine son nom.
Elle balaie la plage des noms de salariés pour y détecter les changements de couleur de fond (pas d'autre critère pour savoir quelle est la ligne de changement de catégorie) : à chaque changement elle incrémente une variable initialisée à 87, code du caractère "W", ainsi cette variable devient 88 (=X) au passage en zone Y, 89 (=Y) au passage en zone Z et 90 (=Z) à la sortie de la zone Z.
Elle compare à chaque changement avec le "Y" ou "Z" issu du bouton, lorsque la correspondance et établie elle mémorise la ligne d'insertion.
L'insertion se fait donc sur cette ligne et ajoute une ligne à la suite des Y ou à la suite des Z. La ligne ajoutée prend le format de la ligne qui précède (par défaut) et les MFC suivent normalement.
Mais je vois que j'ai oublié de voir tes formules en ligne 21, qui elles ne suivent pas...
Je m'en occuperai après manger...
J'ai aussi arrangé tes MFC pour éviter leur multiplication inutile.
Cordialement.
Désolé encore, j'avais homogénéisé tes bordures intérieures inégales, et ajouté au code un rétablissement de la bordure inférieure, absente à cause du changement de bordure après Z. Mais j'ai supprimé le bon fichier !!
Je rétablirai ça en même temps que les formules...