Sub test()
    Dim newval$, i&, Firstindex&, texte$,tableau
    newval = ""
    tableau = Range("A6:AE" & Cells(Rows.Count, "A").End(xlUp).Row)
    For i = 1 To UBound(tableau)
        If tableau(i, 7) <> newval Then
            Firstindex = i
            newval = tableau(i, 7)
            texte = ""
        Else
            If tableau(i, 31) <> "" Then
                tableau(Firstindex, 31) = tableau(Firstindex, 31) & " - " & tableau(i, 31): tableau(i, 31) = ""
            End If
            'on enleve les doublons(texte dans le resultat en first cellule de chaque valeur
            'en gros on suprime les chaines qui se repete mot pour mots
            t = Split(tableau(Firstindex, 31), "-")
            For x = 0 To UBound(t)
                If Not Trim(t(x)) = "" And Not texte Like "*" & Trim(t(x)) & "*" Then texte = texte & "-" & t(x)
            Next
            If Left(texte, 1) = "-" Then texte = Mid(texte, 2)
            tableau(Firstindex, 31) = texte
        End If
    Next i
Application.EnableEvents = False
Cells(6, "AE").Resize(UBound(tableau), 1) = WorksheetFunction.Index(tableau, 0, 31) 'on retranscrit que la colonne 31 "AE"
Application.EnableEvents = True
End Sub