Concatener toute une ligne
Résolu
Anthelm
Messages postés
198
Date d'inscription
Statut
Membre
Dernière intervention
-
maxime365472 -
maxime365472 -
A voir également:
- Concatener toute une ligne
- Partager photos en ligne - Guide
- Mètre en ligne - Guide
- Aller à la ligne excel - Guide
- Concatener deux cellules excel - Guide
- Site de vente en ligne particulier - Guide
3 réponses
Bonjour,
Voici une fonction personnalisée vous permettant de concatener :
> une ligne entière (jusqu'à la première cellule vide),
> une colonne entière (jusqu'à la première cellule vide),
> une plage de cellule,
> un Array à 1 dimension (uniquement en VBA),
Exemples d'utilisation :
Pour une cellule (renvoie la valeur contenue dans cette cellule) : =CONCATENER_PLUS(A1;", ")
Pour une colonne : =CONCATENER_PLUS(J:J;" / ")
Pour une ligne : =CONCATENER_PLUS(1:1;" : ")
Pour une plage : =CONCATENER_PLUS(C1:F1;", ")
ou encore : =CONCATENER_PLUS(C1:F5;", ")
Renvoient une erreur :
=CONCATENER_PLUS(1;", ")
Pour des cellules non conjointes, utiliser CONCATENER simplement.
Voici une fonction personnalisée vous permettant de concatener :
> une ligne entière (jusqu'à la première cellule vide),
> une colonne entière (jusqu'à la première cellule vide),
> une plage de cellule,
> un Array à 1 dimension (uniquement en VBA),
Public Function CONCATENER_PLUS(TabOrRange As Variant, Optional strSep As String, Optional ByRow As Boolean) As String Dim temp As Variant, i As Long, j As Long, fin As Long, R As Range If TypeOf TabOrRange Is Excel.Range Then If TabOrRange.Rows.Count = 1 And TabOrRange.Columns.Count = 1 Then CONCATENER_PLUS = TabOrRange.Value ElseIf TabOrRange.Rows.Count > 1 And TabOrRange.Columns.Count > 1 Then If ByRow Then ReDim temp(1 To TabOrRange.Rows.Count) As String For i = 1 To TabOrRange.Rows.Count For j = 1 To TabOrRange.Columns.Count temp(i) = temp(i) & strSep & TabOrRange.Cells(i, j).Text Next temp(i) = Right$(temp(i), Len(temp(i)) - Len(strSep)) Next CONCATENER_PLUS = Join(temp, strSep) Else ReDim temp(1 To TabOrRange.Rows.Count) As String For i = 1 To TabOrRange.Columns.Count For j = 1 To TabOrRange.Rows.Count temp(j) = TabOrRange.Cells(i, j).Text Next CONCATENER_PLUS = CONCATENER_PLUS & strSep & Join(temp, strSep) Next CONCATENER_PLUS = Right$(CONCATENER_PLUS, Len(CONCATENER_PLUS) - Len(strSep)) End If Else fin = TabOrRange.Rows.Count If fin = 1 Then fin = TabOrRange.Columns.Count ReDim temp(1 To fin) i = 1 Do While TabOrRange.Cells(i).Value <> vbNullString And i <= fin temp(i) = TabOrRange.Cells(i) i = i + 1 Loop ReDim Preserve temp(i - 1) CONCATENER_PLUS = Join(temp, strSep) CONCATENER_PLUS = Left$(CONCATENER_PLUS, Len(CONCATENER_PLUS) - Len(strSep)) Erase temp End If ElseIf IsArray(TabOrRange) Then CONCATENER_PLUS = Join(TabOrRange, strSep) Else CONCATENER_PLUS = "#VALUE" End If End Function
Exemples d'utilisation :
Pour une cellule (renvoie la valeur contenue dans cette cellule) : =CONCATENER_PLUS(A1;", ")
Pour une colonne : =CONCATENER_PLUS(J:J;" / ")
Pour une ligne : =CONCATENER_PLUS(1:1;" : ")
Pour une plage : =CONCATENER_PLUS(C1:F1;", ")
ou encore : =CONCATENER_PLUS(C1:F5;", ")
Renvoient une erreur :
=CONCATENER_PLUS(1;", ")
Pour des cellules non conjointes, utiliser CONCATENER simplement.
Votre fonction est très utile,
Cependant j'en ai une utilisation particulière, je possède des cellules vides dans le jeux de données, J'aimerai l'utiliser lignes par lignes cependant j'ai des cellules vides dans mes lignes
Comment est ce que je peux utiliser la fonction ?
Sinon vous dites que si les cellules non conjointes, utiliser concaténer simplement ?
Ou trouver la fonction concaténer ?
Merci de votre réponse
Cordialement