Macro VBA pour concaténation

Résolu
Mat -  
 Ed -
Bonjour,

je souhaite réaliser une macro qui me permette de concaténer des cellules sachant que :
- je ne connais pas le nombre exact de cellules à concaténer
- je souhaite qu'une virgule apparaisse entre chaque cellule ainsi concaténée.

Exemple :
données source (chaque lettre est sur une ligne dans une cellule)
A
B
C
D
E
..
W

données de sortie (dans une seule cellule) :
A,B,C,D,E,..,W

Cordialement,
A voir également:

6 réponses

Mike-31 Messages postés 19571 Date d'inscription   Statut Contributeur Dernière intervention   5 139
 
Salut,

Pourquoi VBA une formule sait faire exemple si tes données sont en A1, A2, A3 etc ...
cette formule

=A1&","&A2&","&A3&","&A4&","&A5&","&A6

elle pourrait être complétée par des conditionnelles pour ne pas afficher une série de ,,,, si les cellules vides viennent s'intercaler et éviter cet affichage A,B,C,,,,,,F

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
0
Ed
 
Bonjour,

Merci pour ta réponse. Cependant, le but est d'appliquer cette formule plusieurs fois et à un grand nombre de cellules (de 100 à 200 parfois). Manuellement ca va me prendre trop de temps à taper cette formule.

Cordialement,
0
Mike-31 Messages postés 19571 Date d'inscription   Statut Contributeur Dernière intervention   5 139
 
Re,

Tu saisis ta formule exemple en F1 ensuite tu l'incrémentes jusqu'en bas de ton tableau et ça prends dix secondes tout au plus

Pour incrémenter une fois la formule rentrée dans ta cellule, clic sur cette cellule, en bas à droite tu clic gauche sur le petit carré et sans lacher le clic tu fais glisser vers le bas et ta formule se recopie sans problème

A+
Mike-31

Un problème sans solution est un problème mal posé  (Einstein)
0
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonjour,

Fonction personnalisée à mettre dans un module :
Function ConcatPlage(plage As Range, separateur As String) As String
    Dim c As Range
    Dim rep As String
    For Each c In plage
        rep = rep & separateur & c.Value
    Next c
    ConcatPlage = Mid(rep, Len(separateur) + 1)
End Function
La plage doit être d'un seul tenant (pas de sélection multiple)
Syntaxe :
=ConcatPlage(plage, separateur)
Ex :
=ConcatPlage(A1:A6;",")
eric
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 318
 
Bonjour à tous,

j'arrivais moi aussi avec une fonction mais Eriic a été le + rapide! donc, je n'insiste pas car c'était à peu près la m^me

Le problème est le format de la cellule de résultat:
j'ai testé avec environ 210 cellules de 6 caractères chacune:
il faut 5 lignes sur une colonne de largeur maxi(255) en utilisant le retour automatique à la ligne...
0
Ed
 
Merci pour cette formule

Cordialement,
0