Macro VBA pour concaténation

Résolu/Fermé
Mat - 19 mai 2009 à 11:14
 Ed - 19 mai 2009 à 12:59
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 18350 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 28 novembre 2024 5 106
19 mai 2009 à 11:29
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
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 18350 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 28 novembre 2024 5 106
19 mai 2009 à 11:56
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 24601 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 25 novembre 2024 7 243
19 mai 2009 à 12:30
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
19 mai 2009 à 12:43
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
Merci pour cette formule

Cordialement,
0