Je suis en utilisant le code suivant - grâce @bonCodigocellules concaténer quand il y a des doublons sans utiliser Transposer
Sub groupConcat()
Dim dc As Object
Dim inputArray As Variant
Dim i As Integer
Set dc = CreateObject("Scripting.Dictionary")
inputArray = WorksheetFunction.Transpose(Sheets(1).Range("A2:B7").Value)
'-- assuming you only have two columns - otherwise you need two loops
For i = LBound(inputArray, 2) To UBound(inputArray, 2)
If Not dc.Exists(inputArray(1, i)) Then
dc.Add inputArray(1, i), inputArray(2, i)
Else
dc.Item(inputArray(1, i)) = dc.Item(inputArray(1, i)) _
& "; " & inputArray(2, i)
End If
Next i
'--output into sheet
Sheets(1).Range("D2").Resize(UBound(dc.keys) + 1) = _
Application.Transpose(dc.keys)
Sheets(1).Range("E2").Resize(UBound(dc.items) + 1) = _
Application.Transpose(dc.items)
Set dc = Nothing
End Sub
Une solution très élégante. Malheureusement, je suis confronté à la limitation de l'utilisation de la méthode Transpose. J'ai de longues chaînes que je voudrais concaténer en utilisant le code ci-dessus. Toute aide sera appréciée.
Cordialement
Quelles sont les limites ,, vous ne l'avez pas expliqué votre problème? – brettdj
@brettdjLe code ne peut pas être redimensionné comme requis. – user3808977
@brettdjLe code ne peut pas être redimensionné comme requis. Cela fonctionne bien pour des valeurs plus petites, mais il échoue lorsque la concaténation entraîne une valeur de cellule de plus de 250 caractères. Le code s'arrête à inputArray = WorksheetFunction.Transpose (Sheets (1) .Range ("A2: B7"). Value) quand il accumule (à la suite de la concaténation ou autrement) 250+ caractères. Il s'arrête également à Sheets (1) .Range ("E2") .Size (UBound (dc.items) + 1) = _ Application.Transpose (dc.items) – user3808977