Salut tout le monde,
désolé pour ceux qui ont pris la peine de télécharger le fichier mais je me suis sûrement trompé!
Je m'étais basé sur une interprétation du français alors que j'aurais dû interpréter la formule!
Correction, donc, même principe : pas de traitement global mais au coup par coup lors d'un changement de valeur dans le tableau.
Espérons, enfin...
Private Sub Worksheet_Change(ByVal Target As Range)
'
Dim iRow%, iRowA%, iCol%, sItem$
'
iRowA = Range("A" & Rows.Count).End(xlUp).Row
iCol = Cells(1, Columns.Count).End(xlToLeft).Column
'
If Not Intersect(Target, Range("C2").Resize(iRowA - 1, iCol - 2)) Is Nothing Then
iRow = Target.Row
For x = 3 To iCol
sItem = sItem & IIf(CInt(Cells(iRow, x)) = 1, IIf(sItem = "", "", "; ") & Cells(1, x), "")
Next
Cells(iRow, 2) = sItem
End If
'
End Sub
A+