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

Hervé à dit:
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("[B]b1[/B]:b" & Range("b65536").End(xlUp).Row)
    t = t & ";" & c
Next c

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

salut

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
Retour