Voici un code légerrissime, pourrait être encore plus simplissime ... sans être célébrissime ! ... la PJ arrive, il faut que je change d'ordi (dropbox ne m'a pas encore renvoyé le bidule)
voilà voilou ...
Option Explicit
Sub mouvements()
Dim arrivee, depart, mois, nom, top
top = False 'passer le premier mois
Sheets("donnees").Select
For Each mois In Range(Range("debutcalend"), Range("debutcalend").End(xlToRight))
If top Then
arrivee = 1
depart = 1
For Each nom In Range(Range("debutnoms"), Range("debutnoms").End(xlDown))
If Cells(nom.Row, mois.Column).Value < Cells(nom.Row, mois.Column - 1) Then
depart = depart + 1
Sheets("departs").Cells(depart, mois.Column - 1).Value = nom.Value
ElseIf Cells(nom.Row, mois.Column).Value > Cells(nom.Row, mois.Column - 1) Then
arrivee = arrivee + 1
Sheets("arrivees").Cells(arrivee, mois.Column).Value = nom.Value
End If
Next nom
Else
top = True
End If
Next mois
End Sub
resterait à faire les mi-temps thérapeutique, temps partiels, retour d'absences longue durée ... en jouant sur des valeurs différentes de 0 et 1 et en captant le commentaire de la zone par exemple