Forum vba excel concatenation

Jojo91 -  
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je suis debutant en VBA et je viens vers vous car je dois realiser une concatenation.

je souhaite concatener une liste de donnees de A1 à A2000 en feuille 1.
Ma concatenation doit apparaire en B2 en feuilles 2. par contre je ne peux pas depasser les 50criteres par case. Donc creer une boucle pour mettre en Feuilles2!B2 la concatenantion Feuille1!A1"; "feuille1!"A2"..";".A50 et a 51 mettre en cellules B3 pour les 50critères suivant et de 101 a 150 en B4.....

J'espere que quelq'un pourra m'aider a faire mon programme. Si j'ai pas etait très clair n'hesitez pas a revenir vers moi pour plus d'explications.

A voir également:

2 réponses

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,
certainement pas le plus simple,
certainement pas le plus rapide,
mais essayez ce code :
Sub Concatene_en_feuille2() 
Dim concat As String 
Dim cpt As Integer, lig As Integer, colB As Integer 
colB = 1 
For cpt = 1 To Sheets("Feuil1").Range("A65536").End(xlUp).Row Step 50 
concat = "" 
    For lig = 0 To 49 
        concat = concat & Sheets("Feuil1").Cells(lig + cpt, 1) 
    Next lig 
With Sheets("Feuil2") 
.Cells(colB, 2) = concat 
End With 
colB = colB + 1 
Next cpt 
End Sub

"Laissez-moi deviner... Votre surnom, c'est «Bande Passante»? "
- Le Tribunal des flagrants délires- P.Desproges -
1
Jojo91
 
Ah super!!!!! MERCI

J'ai juste rajouter la mentions &"; " pour avoir mon separateur sinon ca me coller tout
ce qui donne
Sub test()
Dim concat As String
Dim cpt As Integer, lig As Integer, colB As Integer
colB = 1
For cpt = 1 To Sheets("Feuil1").Range("A65536").End(xlUp).Row Step 50
concat = ""
For lig = 0 To 49
concat = concat & Sheets("Feuil1").Cells(lig + cpt, 1) & "; " Next lig
With Sheets("Feuil2")
.Cells(colB, 2) = concat
End With
colB = colB + 1
Next cpt
End Sub

Est ce que on peut mettre en collone A a coté de chaque serie le mot "concatener1" puis en A3 "concatener2"... et colorer la case B2, B3 tant que la boucle est active?

merci d'avance.
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Salut,
Bien sur que l'on peux écrire concatenre1, 2 etc... et colorier les cellules colonne B :
Sub test() 
Dim concat As String 
Dim cpt As Integer, lig As Integer, colB As Integer 
colB = 1 
For cpt = 1 To Sheets("Feuil1").Range("A65536").End(xlUp).Row Step 50 
    concat = "" 
    For lig = 0 To 49 
        concat = concat & Sheets("Feuil1").Cells(lig + cpt, 1) & "; " 
    Next lig 
With Sheets("Feuil2") 
    .Cells(colB, 1) = "Concatener " & colB 'écris "concatener 1" , 2 , 3 etc.. en col A
    .Cells(colB, 2) = concat
    If colB + 1< 57 Then 'il existe 57 couleurs en Excel, 1 est à éviter car noir!
        .Cells(colB, 1).Interior.ColorIndex = colB + 1
    End If 
End With 
colB = colB + 1 
Next cpt 
End Sub
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour,

excusez l'incruste

au passage peut-^tre pour éviter de boucler sur une concaténation:

T_50 = Application.Transpose(Range("A1:A50"))
    Sheets(2).Range("B2") = Join(T_50, "; ")
1
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Salut michel.
Comme bien souvent, tu as raison...
A bientôt
ps : tu ne t'incruste pas en apportant une autre solution...
0