Bonjour la communauté,
J'ai un problème que je souhaiterais vous soumettre : faire la concaténation d'une plage de 2000 cellules avec un retour à la ligne pour chaque concaténation, le tout sans doublon.
J'ai deux fonctions personnalisées (qui ne sont pas de moi) qui ne respecte que 50% du cahier des charges. Je fais donc appelle à toi, O communauté pour me venir en aide. Je répondrais humblement (et avec 6h de décalage horaire) à toutes questions qui permettront de répondre à cette problématique.
Par avance, je vous remercie du temps passé sur mon cas.
Bien cordialement,
Arnaud
J'ai un problème que je souhaiterais vous soumettre : faire la concaténation d'une plage de 2000 cellules avec un retour à la ligne pour chaque concaténation, le tout sans doublon.
J'ai deux fonctions personnalisées (qui ne sont pas de moi) qui ne respecte que 50% du cahier des charges. Je fais donc appelle à toi, O communauté pour me venir en aide. Je répondrais humblement (et avec 6h de décalage horaire) à toutes questions qui permettront de répondre à cette problématique.
Code:
Function ConcatenateRange(ByVal cell_range As Range, _
Optional ByVal seperator As String) As String
Dim cell As Range
Dim newString As String
Dim cellArray As Variant
Dim i As Long, j As Long
cellArray = cell_range.Value
For i = 1 To UBound(cellArray, 1)
For j = 1 To UBound(cellArray, 2)
If Len(cellArray(i, j)) <> 0 Then
newString = newString & (seperator & cellArray(i, j))
End If
Next
Next
If Len(newString) <> 0 Then
newString = Right$(newString, (Len(newString) - Len(seperator)))
End If
ConcatenateRange = newString
End Function
Code:
Function Concat(RowRange As Range) As String
Dim X As Long, CellVal As String, ReturnVal As String, Result As String
Const Delimiter = ", " 'CHAR(10) ne marche pas
For X = 1 To RowRange.Count
ReturnVal = RowRange(X).Value
If Len(RowRange(X).Value) Then If InStr(Result & Delimiter, Delimiter & ReturnVal & Delimiter) = 0 Then Result = Result & Delimiter & ReturnVal
Next
Concat = Mid(Result, Len(Delimiter) + 1)
End Function
Par avance, je vous remercie du temps passé sur mon cas.
Bien cordialement,
Arnaud
Pièces jointes
Dernière édition: