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 :
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