Salut le fil ...
Bon moi je vais partir sur le fait qu'une chaine est toujours là "Travailler sur", en partant de là tu peux tester ce bout de code dans la même idée que ma première proposition.
Sub Test()
Dim a As String, b As Long, i As Long, j As Integer, strTemp As String, tabTemp As Variant
'a = "travailler sur; Excel VBA; en cours; c'est tendu; faut se grouiller; travailler sur; SAP; à faire; c'est mort; travailler sur; MySQL; terminé; azeulai; travailler sur; MCD; terminé; 20 assuré; RAF;"
'// On charge la valeur à traiter
a = Worksheets("Test2").Range("A2").Value
'// On calcule le nombre d'occurance pour "Travailler sur"
j = CalculateOccurenceNumber(a, "travailler sur")
'// on démarre par la fin de la chaine
For i = j + 1 To 2 Step -1
'// on cherche la dernière occurence
b = InStrRev(a, "travailler sur", , vbTextCompare)
strTemp = Right(a, Len(a) - b + 1)
Debug.Print b & " : " & strTemp
'// on charge un tableau temporaire
tabTemp = Split(strTemp, ";")
'// et on transpose sur la feuille
Worksheets("ResultatTest2").Range("A" & i).Resize(, UBound(tabTemp)) = tabTemp
'// On supprime la chaine traitée
a = Replace(a, strTemp, "")
j = j - 1
Next
End Sub
Function CalculateOccurenceNumber(strString As String, strCharacter As String) As Integer
'// Fonction trouvée sur la toile
Dim intPosition As Integer
intPosition = 1
While intPosition <= Len(strString) And strCharacter <> "" And InStr(intPosition, strString, strCharacter) <> 0
intPosition = InStr(intPosition, strString, strCharacter) + 1
CalculateOccurenceNumber = CalculateOccurenceNumber + 1
Wend
End Function
Voilà, mais là encore c'est subjectif car on peut avoir des modifications qui ne seront pas prises en compte.
Bonne programmation.