Compiler le contenu de plusieurs cellules

Ludion62

XLDnaute Nouveau
Bonjour,

Je souhaiterais compiler le contenu de plusieurs cellules dans une seule cellule en y ajoutant une virgule entre chaque valeur.

Par exemple j'ai :
A1 : 158
A2 : 163
A3 : 188

Je souhaiterais avoir en B1 la compilation suivante : 158,163,188

En sachant que le nombre de cellules est beaucoup plus important et aléatoire.

Merci de vos réponses.

Ludion62
 

Softmama

XLDnaute Accro
Re : Compiler le contenu de plusieurs cellules

bonjour,
en B1, par exemple :
Code:
=compile(A1:A3)

avec cette fonction personnalisée:
VB:
Function compile(cc As Range) As String
Application.Volatile
Dim c As Range
For Each c In cc
    If c <> "" Then compile = compile & CStr(c) & ","
Next c
compile = Mid(compile, 1, Len(compile) - 1)
End Function

ce qui permet de gérer des plages importantes, facilement
 

Pierrot93

XLDnaute Barbatruc
Re : Compiler le contenu de plusieurs cellules

Bonjour à tous

une autre solution,

Code:
Range("B1").Value = Join(Application.Transpose(Range("A1", Range("A65536").End(xlUp)).Value), ";")

A noter qu'il est préférable d'avor le ; comme séparateur si les cellules sont renseignées par des nombres..

bon après midi
@+
 
G

Guest

Guest
Re : Compiler le contenu de plusieurs cellules

Bonjour à tous,

Puisque je l'avais écrite sous forme de fonction:

Code:
Function Compile(Plage As Range, Optional strSep As String = ",")
    'Si la plage à plus de ligne que de colonne
    'traiter que la première colonne
    If Plage.Rows.Count > Plage.Columns.Count Then
        Compile = Join(Application.Transpose(Plage.Columns(1)), strSep)
    Else
    'sionon traiter la première ligne
        Compile = Join(Application.Transpose(Application.Transpose(Plage.Rows(1))), strSep)
    End If
End Function

Utilisation dans une cellule:

= Compile (A1:A3)
Ou
= Compile (A1:A3, ";") 'pour changer le séprateur

Ou

= Complie ( A1:C1) ' en ligne
ou
= Compile ( A1:C1,";")

A+ à tous
 

Ludion62

XLDnaute Nouveau
Re : Compiler le contenu de plusieurs cellules

Merci Pierrot93, ça fonctionne parfaitement.
Merci également à tous de vous être penché sur mon problème.

A bientôt.

Bonjour à tous

une autre solution,

Code:
Range("B1").Value = Join(Application.Transpose(Range("A1", Range("A65536").End(xlUp)).Value), ";")

A noter qu'il est préférable d'avor le ; comme séparateur si les cellules sont renseignées par des nombres..

bon après midi
@+
 

Discussions similaires

Réponses
26
Affichages
418

Statistiques des forums

Discussions
312 331
Messages
2 087 356
Membres
103 528
dernier inscrit
hplus