Evaluation mobilité - ranking par date

Bonjour à tous,

J'ai deux problèmes. L'un a priori simple mais qui me résiste, un second compliqué dont je perçois mal comment je peux l'aborder sous Excel

Mon objectif est d'analyser la mobilité de collaborateurs au sein d'une entreprise et de comprendre quels sont les postes qu'ils ont occupés.

Mon fichier comprend des noms, des dates de prise de postes et la direction de rattachement du poste, des libellés de postes

Mon objectif est de pouvoir faire ressortir un classement chronologique des postes pour chaque collaborateur en fonction des dates de postes.

Exemple : voir fichier

Exercice bonus difficile : positionner le poste en fonction d’une direction de référence. Je cherche à s'il était éloigné de la direction de référence. Par exemple Pierre a atteint la direction de référence à son poste 3. Le poste 2 et 1 auraient donc une valeur de -1 et -2 respectivement et le poste 4 une valeur de 1.

bonjour,

une proposition de solution via une macro

Option Explicit

Sub aargh()

Dim direction_reference$, ligne_dernier_nom&, i&, premiere_ligne_du_nom&, idirection_reference&, ctr_poste&, j&, position&

    With Sheets("feuil1")
        direction_reference = .Range("K1")
        ligne_dernier_nom = .Cells(Rows.Count, 1).End(xlUp).Row

        'tri sur nom et sur date
        .Range("A1").Resize(ligne_dernier_nom, 8).Sort key1:=.Range("A1"), order1:=xlDescending, key2:=.Range("B1"), order2:=xlAscending, Header:=xlYes

        For i = 2 To ligne_dernier_nom

            If .Cells(i, 1) <> .Cells(i - 1, 1) Then 'changement de nom
                ctr_poste = 1
                premiere_ligne_du_nom = i
                idirection_reference = 0
            Else
                ctr_poste = ctr_poste + 1
            End If

            .Cells(i, "E") = "Poste " & ctr_poste

            If .Cells(i, "C") = direction_reference Then
                If idirection_reference = 0 Then
                    idirection_reference = i
                    For j = premiere_ligne_du_nom To i
                        position = j - i
                        .Cells(j, "F") = position
                    Next j
                    premiere_ligne_du_nom = i
                Else
                    .Cells(i, "F") = 0
                End If
            Else
                If idirection_reference > 0 Then .Cells(i, "F") = .Cells(i - 1, "F") + 1
            End If

        Next i

    End With

End Sub

de rien

Toutes mes excuses.

Ton aide est précieuse et cela fonctionne parfaitement !

Merci encore

Rechercher des sujets similaires à "evaluation mobilite ranking date"