[MISE A JOUR] Très belle fonction pour concaténer une plage

Note : je viens d'éditer ce post pour prendre en compte les commentaires ci-dessous.
Merci à tous.

Vous pouvez télécharger ici un fichier exemple.

Cette fonction permet de concaténer une plage avec un séparateur.


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

Si vous utilisez CHR(10) comme séparateur, ca va mettre les différents éléments les uns en dessous des autres (voir la fonction ConcatenateRangeRetourLigne du fichier).
Il faut aussi activer le retour à la ligne automatique pour cette cellule :

concatener-plage-renvoi-automatique-a-la-ligne

Pour utiliser cette fonction, copiez le code dans un module VBA, puis dans Excel, vous tapez la fonction en commençant par =.

Voici une vidéo qui explique comment faire à partir d'un fichier vide :

A bientôt

Source :
http://stackoverflow.com/questions/8135995/how-to-merge-all-column-into-one-cell-in-excel

Gaëtan