concatener + de 30 chaînes

carloside

XLDnaute Nouveau
Bonjour à tous,

J'ai debuté hier Excell et je cherches désèspérement comment concatener un grand nombre de cellules. Ne connaissant pas grand'chose en macro VBA, j'ai trouvé et modifié celle-ci :

Function TXT_Concatenation(Plage2Concatenate As Range) As String
For Each cl In Plage2Concatenate: txt = txt & IIf(cl.Text <> "", cl.Text & " ", ""): Next cl: TXT_Concatenation = IIf(Right(txt, 1) = " ", Mid(txt, 1, Len(txt) - 1), txt)
End Function


Sub Cell_TXT_Concatenation()

ActiveCell = TXT_Concatenation(Range("D1:I1"))

End Sub

Cela fonctionne pour concatener dans la cellule choisie ( par ex : pour A2, les chaînes de caractère contenue dans D2 jusque I2, pour A3 D3 jusqu a I3 etc...)

Je souhaiterais appliquer cela a toutes mes lignes de la colonne A (j'en ai + de 11000)

En esperant avoir été clair.

Merci d'avance
 

Pièces jointes

  • concatener.zip
    7.1 KB · Affichages: 44
  • concatener.zip
    7.1 KB · Affichages: 49
  • concatener.zip
    7.1 KB · Affichages: 43

nat54

XLDnaute Barbatruc
Re : concatener + de 30 chaînes

Bonjour

J'avais récupéré ça une fois ...

A tester

Code:
 [/FONT]
[FONT=Arial]Function ConcatPlage(plage As Range, séparateur As String, Optional contenant As String) As String[/FONT]
[FONT=Arial]    Dim rep As String, c As Range[/FONT]
[FONT=Arial]    For Each c In plage[/FONT]
[FONT=Arial]        If InStr(c.Value, contenant) > 0 Then[/FONT]
[FONT=Arial]            rep = rep & c.Value & séparateur[/FONT]
[FONT=Arial]        End If[/FONT]
[FONT=Arial]    Next c[/FONT]
[FONT=Arial]    ConcatPlage = Left(rep, Len(rep) - Len(séparateur))[/FONT]
[FONT=Arial]End Function


Mise en œuvre : ALT+F11, Insertion/Module, copier la fonction ConcatPlage ci-dessus, ALT+Q

Mise en application :
=ConcatPlage(la_plage;"le_symbole_séparateur","condition_optionnelle)

Exemples

* plage [A1:A20] = 1 à 20, concatener les expressions contenant "2"
=ConcatPlage(A1:A20;"#";2)
Résultat : 2#12#20

* plage [A1:A20] = 1 à 20, concatener toutes les expressions
=ConcatPlage(A1:A20;"#")
Résultat: 1#2#3#4#5#6#7#8#9#10#11#12#13#14#15#16#17#18#19#20
 

excalibur

XLDnaute Impliqué
Re : concatener + de 30 chaînes

bonjour carloside nat54 le forum une methode tres rapide pour concatenener sur 11000 lignes utilisant un tableau interm... je suis parti de ton exemple je m arrete a la colonne i en attendant plus infos de ta part comme cela pas facile???
 

Pièces jointes

  • concatener.zip
    11.4 KB · Affichages: 49
  • concatener.zip
    11.4 KB · Affichages: 44
  • concatener.zip
    11.4 KB · Affichages: 51

Statistiques des forums

Discussions
312 448
Messages
2 088 505
Membres
103 873
dernier inscrit
Sabin