Concatener toute une ligne
Résolu/Fermé
Anthelm
Messages postés
198
Date d'inscription
lundi 15 octobre 2018
Statut
Membre
Dernière intervention
2 mars 2024
-
Modifié le 23 oct. 2018 à 19:36
maxime365472 - 26 nov. 2021 à 11:37
maxime365472 - 26 nov. 2021 à 11:37
A voir également:
- Concatener toute une ligne
- Aller à la ligne excel - Guide
- Site de vente en ligne particulier - Guide
- Partage de photos en ligne - Guide
- Apparaitre hors ligne instagram - Guide
- Concatener deux cellules excel - Guide
3 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 750
Modifié le 24 oct. 2018 à 11:18
Modifié le 24 oct. 2018 à 11:18
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.
via55
Messages postés
14487
Date d'inscription
mercredi 16 janvier 2013
Statut
Membre
Dernière intervention
13 octobre 2024
2 733
23 oct. 2018 à 20:45
23 oct. 2018 à 20:45
Une possibilité :
En B4 tu mets =B3
puis en C4 la formule=B4 & ";" & C4 à étirer jusqu'au bout de la ligne, dans la dernière cellule tu auras la concaténation
Sinon si tu le veux par formule dans une cellule il faut créer une fonction personnalisée en VBA
Cdlmnt
Via
En B4 tu mets =B3
puis en C4 la formule=B4 & ";" & C4 à étirer jusqu'au bout de la ligne, dans la dernière cellule tu auras la concaténation
Sinon si tu le veux par formule dans une cellule il faut créer une fonction personnalisée en VBA
Cdlmnt
Via
Anthelm
Messages postés
198
Date d'inscription
lundi 15 octobre 2018
Statut
Membre
Dernière intervention
2 mars 2024
1
23 oct. 2018 à 21:56
23 oct. 2018 à 21:56
Merci! je vais essayer ça
Le Pingou
Messages postés
12159
Date d'inscription
mercredi 11 août 2004
Statut
Contributeur
Dernière intervention
14 octobre 2024
1 448
24 oct. 2018 à 09:34
24 oct. 2018 à 09:34
Bonjour Anthelm,
Sur le poste : Renvoyer du texte Anthelm - 23 oct. 2018 à 00:22 vous avez une proposition.
Sur le poste : Renvoyer du texte Anthelm - 23 oct. 2018 à 00:22 vous avez une proposition.
9 nov. 2018 à 20:24
Modifié le 26 nov. 2021 à 12:06
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