Concatener en inserant un carractere entre les cellules

Océane

XLDnaute Impliqué
Bonjour
Comme dans l'exemple joint, je voudrais créer une liste de contact prête a recopier dans ma messagerie.
Pour cela la formule concatener fonctionne, mais il faudrait que je puisse ajouter un ; entre chaque adresse...
Cela est -il possible sans macro?
Merci d'avance
 

Pièces jointes

  • Classeur1.xlsx
    9.6 KB · Affichages: 72
  • Classeur1.xlsx
    9.6 KB · Affichages: 74
  • Classeur1.xlsx
    9.6 KB · Affichages: 73

camarchepas

XLDnaute Barbatruc
Re : Concatener en inserant un carractere entre les cellules

Bonjour Océane,

Voici une solution avec la fonction concatener.

Il suffit ensuite de recopier la formule vers le bas sur toutes les lignes à traiter , voir le fichier.
 

Pièces jointes

  • Classeur1.xlsx
    10.2 KB · Affichages: 100
  • Classeur1.xlsx
    10.2 KB · Affichages: 107
  • Classeur1.xlsx
    10.2 KB · Affichages: 99

hbenalia

XLDnaute Occasionnel
Re : Concatener en inserant un carractere entre les cellules

Bonjour à tous,

Une autre solution avec une fonction personnalisée CONCAT (qu'on trouvera aussi dans l'utilitaire de macros complémentaires "Morefunc" sous le même nom), son code est:
Code:
Function Concat(plage As Range, Optional séparateur As String) As String
    Dim rep As String, c As Range
    For Each c In plage
        If c.Value <> "" Then
            rep = rep & c.Value & séparateur
        End If
    Next c
    Concat = Left(rep, Len(rep) - Len(séparateur))
End Function

et en application dans le fichier attaché...

Cordialement
 

Pièces jointes

  • Classeur1.xls
    33 KB · Affichages: 75
  • Classeur1.xls
    33 KB · Affichages: 64
  • Classeur1.xls
    33 KB · Affichages: 64

job75

XLDnaute Barbatruc
Re : Concatener en inserant un carractere entre les cellules

Bonjour Océane, camarchepas,

Voici deux fonctions macros :

Code:
Function CONCATV(plage As Variant) As String
plage = Application.Transpose(plage)
CONCATV = Join(plage, ";")
End Function

Function CONCATH(plage As Variant) As String
plage = Application.Transpose(plage)
plage = Application.Transpose(plage)
CONCATH = Join(plage, ";")
End Function
Fichier joint.

Edit : salut hbenalia

A+
 

Pièces jointes

  • Concaténer(1).xls
    35 KB · Affichages: 53

job75

XLDnaute Barbatruc
Re : Concatener en inserant un carractere entre les cellules

Re, salut David :)

Quelques modifications qui permettent :

- d'utiliser des plages illimitées

- de ne pas tenir compte des cellules vides.

Code:
Function CONCATV(plage As Variant) As String
Set plage = Intersect(plage, ActiveSheet.UsedRange)
plage = Application.Transpose(plage)
CONCATV = Replace(Application.Trim(Join(plage)), " ", ";")
End Function

Function CONCATH(plage As Variant) As String
Set plage = Intersect(plage, ActiveSheet.UsedRange)
plage = Application.Transpose(plage)
plage = Application.Transpose(plage)
CONCATH = Replace(Application.Trim(Join(plage)), " ", ";")
End Function
Fichier (2).

A+
 

Pièces jointes

  • Concaténer(2).xls
    37.5 KB · Affichages: 138

Océane

XLDnaute Impliqué
Re : Concatener en inserant un carractere entre les cellules

Bonjour à tous
Merci les spécialistes en macro, mais je ne suis pas très à l'aise, dans ce style, alors je choisir la solution : formule.
J'ai établi une règle dans l'exemple ci-joint, est-il possible de réaliser la même chose directement avec l'assistant ?
 

Pièces jointes

  • Concaténer11.xls
    36.5 KB · Affichages: 60

job75

XLDnaute Barbatruc
Re : Concatener en inserant un carractere entre les cellules

Re Océane,

Tant pis si vous n'aimez pas les macros...

Laurent Longre a créé une fonction MCONCAT dans Morefunc (voyez sur le web).

Elle concatène les éléments d'une matrice.

Cette fonction fait à peu près la même chose :

Code:
Function MATCONCAT$(plage, separateur$)
Dim tablo(), t, n&
Set plage = Intersect(plage, ActiveSheet.UsedRange)
ReDim tablo(Application.CountA(plage) - 1)
plage = plage 'matrice, plus rapide
For Each t In plage
  If Not IsEmpty(t) Then tablo(n) = t: n = n + 1
Next
MATCONCAT = Join(tablo, separateur)
End Function
Fichier (3).

PS : je n'ai jamais entendu parler de l'Assistant concaténer :confused:

A+
 

Pièces jointes

  • Concaténer(3).xls
    34.5 KB · Affichages: 44
Dernière édition:

Océane

XLDnaute Impliqué
Re : Concatener en inserant un carractere entre les cellules

Ce n’est pas que je déteste les macro, au contraire je trouve çà magique quand on ne peux pas faire autrement; c'est tout simplement que je ne les maitrises pas...
Effectivement il n'y a pas d'assistant "concatener"; je voulais parler de l'assistant en général pour établir une formule.

wOQ84vFLfsc9AAAAABJRU5ErkJggg==


Toujours est-il que la fonction MATCONCAT correspond exactement à mon besoin. Merci encore
 

job75

XLDnaute Barbatruc
Re : Concatener en inserant un carractere entre les cellules

Re,

Notez que j'ai modifié la macro du post #8, une ligne était inutile.

Voyez aussi MCONCAT, on peut télécharger Morefunc gratuitement.

Mais pas sûr que ce soit possible sur Excel 2007/2010.

A+
 

Océane

XLDnaute Impliqué
Re : Concatener en inserant un carractere entre les cellules

En prenant modèle sur la formule en C3, de l'exemple joint, je voudrai en C11 créer la même chose avec les données de la plage A11:B13...
Comment faire, je dois avoir un Pb d syntaxe...
 

Pièces jointes

  • Concaténer33.xls
    35 KB · Affichages: 55

Discussions similaires

Réponses
9
Affichages
229

Statistiques des forums

Discussions
312 579
Messages
2 089 880
Membres
104 298
dernier inscrit
MarieCB