Forum vba excel concatenation

Jojo91 -  
pijaku Messages postés 13513 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.

2 réponses

  1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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
    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
    2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      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
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
       
      Salut michel.
      Comme bien souvent, tu as raison...
      A bientôt
      ps : tu ne t'incruste pas en apportant une autre solution...
      0