"concatenation"

loto

XLDnaute Occasionnel
Bonsoir,

Je souhaiterai récupérer automatiquement le contenu plus de 100 cellules en incluant un séparateur type point (.) entre les valeurs.
Les formules ont leurs limites vu le nbre de données à traiter.
Peut -on écrire cela en vba?
a3=a1&"."&a2&"."&......................

merci
 

mth

XLDnaute Barbatruc
Re : "concatenation"

Bonsoir lolo,

Un essai, en attendant mieux (données en ligne 1):

Code:
Sub concat()
Dim i As Long, x As Long, y As String
i = Sheets("Feuil1").Cells(1, Columns.Count).End(xlToLeft).Column
For x = 1 To i
    y = y & Cells(1, x) & "."
Next x
Sheets("Feuil1").Range("A3") = y
End Sub
 

hbenalia

XLDnaute Occasionnel
Re : "concatenation"

Bonjour à tous, bonjour loto et mth

Le code de mth est la solution idéale à ce problème, et il n'y a pas mieux, juste que ce code laisse après concaténation un point "." à la fin... Pour y remédier j'ai fait une transformation (toute petite)... Et le code sera:
Code:
Sub concat()
Dim i As Long, x As Long, y As String
i = Sheets("Feuil1").Cells(1, Columns.Count).End(xlToLeft).Column
[COLOR="Red"]y = Cells(1, 1)[/COLOR]
For x = [COLOR="red"]2[/COLOR] To i
    y = y & [COLOR="red"]"."[/COLOR] & Cells(1, x)
Next x
Sheets("Feuil1").Range("A3") = y
End Sub

Une remarque sur la déclaration de loto "Les formules ont leurs limites vu le nbre de données à traiter", je ne suis pas d'accord, les paramètres des foncttions d'excel sont limités par exemple la fonction CONCATENER accepte 30 paramètres; mais si on a besoin de concatener les contenus de plus de 30 cellules (par exemple) on peut jumeler cette fonction plusieurs fois et augmenter ainsi le nombre de paramètres:
Code:
=Concatener(Concatener(P1;P2;...;P30);Concatener(P1;P2;...;P30);...;Concatener(P1;P2;...;P30))
où P1; P2;...; P30 sont les 30 paramètres de la fonction CONCATENER
Mais pour concatener les contenus de 100 cellules par la fonction CONCATENER ou par & c'est fatiguant et long, mieux le faire à l'aide d'un code VBA, c'est plus rapide...

Cordialement
 

loto

XLDnaute Occasionnel
Re : "concatenation"

Bonjour,

Merci pour cette démo de maitrise brillantissime.
Je ne suis hélàs pas au niveau car j'essaye lamentablement de transformer le tir car mes données sont en colonne (de a2 à a..) (fin variable) et la cellule de destination de la concaténation en c3
Bref dans l'autre sens et je n'arrive pas à l'écrire!!

Etes-vous tjs sur le fil?

Merci de votre aide
 

mth

XLDnaute Barbatruc
Re : "concatenation"

Bonjour Loto,

En repartant du code de hbenalia, essaie ainsi:

Code:
Sub concat()
Dim i As Long, x As Long, y As String
i = Sheets("Feuil1").Cells(Rows.Count, 1).End(xlUp).Row
y = Cells(1, 1)
For x = 2 To i
    y = y & "." & Cells(x, 1)
Next x
Sheets("Feuil1").Range("c3") = y
End Sub

Bonne journée,

mth
 
G

Guest

Guest
Re : "concatenation"

Bonjour Super Loto (vendredi 13), hBenalia,

Mth:):):)

Autre proposition,
Code:
[COLOR=blue]Sub[/COLOR] Concat()
[COLOR=blue]Dim[/COLOR] t [COLOR=blue]As[/COLOR] [COLOR=blue]Variant[/COLOR]
[COLOR=blue]With[/COLOR] Sheets([I]"Feuil1"[/I])
 t = Application.Transpose(.Range([I]"A2:A"[/I] & .Cells(Rows.Count, 1).[COLOR=blue]End[/COLOR](xlUp).Row))
 .Range([I]"C3"[/I]) = Join(t, [I]"."[/I])
[COLOR=blue]End[/COLOR] [COLOR=blue]With[/COLOR]
[COLOR=blue]End[/COLOR] [COLOR=blue]Sub[/COLOR]

qui peut être réduit (mais moins "lisible"):

Code:
[COLOR=BLUE]Sub[/COLOR] Concat()
[COLOR=BLUE]With[/COLOR] Sheets([i]"Feuil1"[/i])
 .Range([i]"C3"[/i]) = Join(Application.Transpose(.Range([i]"A2:A"[/i] & .Cells(Rows.Count, 1).[COLOR=BLUE]End[/COLOR](xlUp).Row)), [i]"."[/i])
[COLOR=BLUE]End[/COLOR] [COLOR=BLUE]With[/COLOR]
[COLOR=BLUE]End[/COLOR] [COLOR=BLUE]Sub[/COLOR]

A+
A++ et grosse bise Mth
 
Dernière modification par un modérateur:

Discussions similaires

Réponses
1
Affichages
153
Compte Supprimé 979
C
Réponses
2
Affichages
568
J
Réponses
4
Affichages
539
J
  • Question
Microsoft 365 onglets Excel
Réponses
9
Affichages
749

Statistiques des forums

Discussions
312 485
Messages
2 088 814
Membres
103 971
dernier inscrit
abdazee