Sub Concaténé()
Dim Li As Long, C As Range
'dans la feuille 2
With Sheets("feuil2")
'de la 8eme à la dernière ligne colonne B
For Li = 8 To .Range("B600").End(xlUp).Row '600 ou +
'on vide la cellule
.Cells(Li, "G") = ""
'on initialise le texte à concaténer
temp = ""
'pour chaque cellule "C" dans la feuille 1 colonne B depuis la ligne 5
For Each C In Sheets("feuil1").Range("B5:B" & Sheets("feuil1").Range("B82").Row)
'si le nom entre les 2 feuilles est le même
If .Cells(Li, "B") = C Then
'on alimente "temp", variable qui concatène le nom de la tâche + déscription.
'IIf fait la même chose que le SI() d'excel.
'ici, si la déscription de la tâche est vide, on récupère uniquement le nom de la tâche
temp = IIf(C.Offset(, 2) = "", temp & " ; " & C.Offset(, 1), temp & " ; " & C.Offset(, 1) & " / " & C.Offset(, 2))
End If
Next
'on met une condition avant d'écrire le résultat au cas où rien n'a été trouvé.
'pour enlever le ";" au début, on récupère la partie droite du texte - les 3 premiers caractères
If temp <> "" Then .Cells(Li, "G") = Right(temp, Len(temp) - 3)
Next
End With
End Sub