Re,
Avec le code que tu as envoyé, la concaténation se fait dans la colonne C. aussi bien pour le 1er que pour le 2ème tableau..
J'ai essayé d'appliquer la macro en masquant les colonnes B à F, et aussi I et J, mais ça concatène en colonne B. quand même.
Normal ton deuxième tableau n'est pas identique au premier. Donc il faut modifier le code pour l'adapter à ton nouveau tableau.
En appliquant le premier code que tu as posté au premier tableau, je m'aperçois que pour les personnes qui ne sont pas en doublons, leur matériel, et s'il y en a, la référence aussi, n'apparaissent pas en concaténé.
Au vu de tes explications je pensais que tu voulais uniquement ceux qui apparaissaient plusieurs fois.
Essaie avec ce code :
Sub Regrouper()
'Macro Dan - Le 15/10/2012
Dim Nom As Range, valeur As Range
Dim nom2
Dim i As Byte
Application.ScreenUpdating = False
For Each Nom In Range("A2:A" & Range("A65536").End(xlUp).Row)
If WorksheetFunction.CountIf(Range("A2:A" & Range("A65536").End(xlUp).Row), Nom) = 1 Then
Nom.Offset(0, 7) = Nom.Offset(0, 6) & " , " & Nom.Offset(0, 10)
Else:
For i = 1 To Range("A65536").End(xlUp).Row - 1
If nom2 <> "" And nom2 = Nom Then Exit For
Set valeur = Nom.Offset(i, 0)
If valeur <> "" And valeur = Nom Then
If Nom.Offset(0, 7) = "" Then
Nom.Offset(0, 7) = Nom.Offset(0, 6) & " , " & valeur.Offset(0, 6) & " , " & Nom.Offset(0, 10)
Else: Nom.Offset(0, 7) = Nom.Offset(0, 7) & " , " & valeur.Offset(0, 6) & " , " & valeur.Offset(0, 10)
End If
End If
Next i
nom2 = Nom
End If
Next Nom
Application.ScreenUpdating = True
End Sub
Si tu n'as qu'un seul nom et pas de données en référence (colonne K), tu auras aussi une virgule à la fin mais je suppose que cela ne gêne pas. La cas contraire il faudra effectuer un contrôle supplémentaire dans le code
Si ok, oublie pas de cloturer le fil...
N.B : Si par hasard tu voulais réouvrir un de tes fils cloturés, il te suffit de recliquer sur la case à cocher devenue rouge après la cloture.
Amicalement