Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

concaténer le texte de cellule d'un tableau dynamique

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

olivier_bahrein

XLDnaute Junior
Bonjour,

y-a-t-il une formule simple pour concaténer le texte de plusieurs cellule d'un tableau dynamique (à dimension variable) ?

exemple:

J'ai un tableau avec des personnes (colonne A) et leur adresses emails (colonne B).

Je souhaiterais avoir une cellule qui concatène toutes les adresses emails les unes à la suite des autres, séparées par un ";". (cela me permettra de faire un copier coller de cette cellule dans Outlook pour envoyer un mail à toutes ces personnes).

La seule solution que j'ai trouvée est la suivante:

1- je crée une troisième colonne (colonne C)
2- sur la deuxième ligne de cette troisième colonne je mets C2=B1&";"&B2
3- je recopie cette formule jusqu'à la dernière ligne remplie

Cela fonctionne mais cette solution n'est pas satisfaisante car:


- la formule doit être répétée à chaque ligne (elle s'incrémente de l'adresse email de la ligne précédente)
- Cette formule ne permet pas de gérer un nouvel enregistrement (tableau dynamique). Il faut recopier la formule en colonne C de ce nouvel enregistrement.


Donc question:

- Sans passer par du code VBA, y-a-til un moyen avec la fonction decaler() par exemple d'avoir une formule qui tienne sur une seule cellule pour résoudre ce problème ?

Merci à vous pour vos conseils et expertises !

Olivier./.
 
Re : concaténer le texte de cellule d'un tableau dynamique

olivier_bahrein à dit:
Personne n'a d'idée à me suggérer ?

Bah, c'est juste pour savoir si c'est possible simplement avec les fonctions d'Excel.

Sinon un petit code VBA est toujours possible!

Bonjour,

je te propose la macro ci-dessous, à recopier dans un module de la feuille comportant les adresses e-mail à concaténer.

La première adresse à concaténer dois se trouver en B5
et les autres en dessous. (un nettoyage de la colonne C est prévu).

Le résultat des concaténations est rapatrié en cellule C2, prêt à être utilisé dans la messagerie.

Voici le code :

Sub Mep()
'
' Macro proposée par Ernest. 30/10/2006.

Dim derligneColonneC As Long
Dim derligneColonneB As Long

' trouve les références

derligneColonneC = (Range("c65536").End(xlUp).Row)
derligneColonneB = (Range("b65536").End(xlUp).Row)

' nettoyage colonne c
' ici je propose le nettoyage de la plage C5 Jusqu'à la dernière ligne de la colonne C

Range("C5:C" & derligneColonneC).Select
Selection.ClearContents

' mise en place nouvelles Adresses
' ATTENTION : la première ligne est située en C5

Range("C5").Select
ActiveCell.FormulaR1C1 = "=RC[-1]"
Range("C6").Select
ActiveCell.FormulaR1C1 = "=R[-1]C&"";""&RC[-1]"
Selection.AutoFill Destination:=Range("C6:C" & derligneColonneB)
Range("C6:C" & derligneColonneB).Select

' A partir d'ici on récupère la dernière concaténation
' et on la rapatrie en C2
' pour l'y copier en "copiage spécial valeur"

Range("C" & derligneColonneC).Select
Selection.Copy
Range("C2").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False

' En c1 on écrit pour Outlook

Range("C1").Select
Application.CutCopyMode = False
ActiveCell.FormulaR1C1 = "Pour OutLook"
Selection.Font.Bold = True
End Sub

Ce code peut être affecté à un bouton et ainsi le programme peut-être lancé à tout moment, notamment, dès l'ajout d'une adresse en colonne B.


Pour finir, je précise que c'est ma première intervention dans ce forum.
Bonjour à tous.
 
Dernière édition:
Re : concaténer le texte de cellule d'un tableau dynamique

bonjour olivier, ernest 🙂

soit le bienvenue parmi nous ernest.

dans ton code on doit pouvoir supprimer les select (trop long à l'execution)

sinon, une autre maniere de renvoyer en c1 la concatenation de B1:Bn :

Code:
Dim c As Range
Dim t As String

For Each c In Range("b1:b" & Range("b65536").End(xlUp).Row)
    t = t & ";" & c
Next c

Range("c1") = Mid(t, 2)

salut
 
Re : concaténer le texte de cellule d'un tableau dynamique


Bonsoir,

Effectivement, c'est plus rapide.
Et on n'est pas obligé de nettoyer avant.

Olivier devrait être content (modifier éventuellement b1 pour commencer au début de la première adresse).

Ernest
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
271
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…