XL 2013 Concatenation en VBA

Backhandshot

XLDnaute Occasionnel
Bonjour à tous ! Je n'ai pas trouvé le code qui me permettrait de concaténer par ligne avec une boucle. J'ai 6 cases que je dois concaténer par ligne : exemple 6 cases de 3 chiffres en faisant toutes les colonnes qui donne 1 total de 20 concaténations pour 6 valeurs par ligne. Je joins 1 fichier qui expliquera mieux la situation.
Votre aide serait appréciée. Merci
 

Pièces jointes

  • ConcatenerVBA.xlsx
    8.2 KB · Affichages: 43

suistrop

XLDnaute Impliqué
Re : Concatenation en VBA

Bonjour,

Essai ce code

Bonjour,

Essai ce code :

Code:
Sub toto()
col = 8
For i = 1 To 6
    For y = i + 1 To 6
        For Z = y + 1 To 6
            Cells(1, col) = Cells(1, i) & ";" & Cells(1, y) & ";" & Cells(1, Z)
            col = col + 1
        Next Z
    Next y
Next i
End Sub

Cordialement
 

Backhandshot

XLDnaute Occasionnel
Re : Concatenation en VBA

Bonjour,

Désolé mais je ne réussis pas à adapter le code correctement, quand je rajoute une boucle les autres lignes sont décalées de 20,40,60 cases etc...mais la concaténation se fait sur les bonnes lignes mais pas dans les colonnes au dessous de la première.
 

Roland_M

XLDnaute Barbatruc
Re : Concatenation en VBA

bonsoir,

voir cette même routine de 'suistrop' avec la boucle Lig rajoutée

Code:
Sub toto()
Lig = 1 'voir départ de la 1'ligne !?
Do: Col = 8
  For I = 1 To 6: For Y = I + 1 To 6: For Z = Y + 1 To 6
    Cells(Lig, Col) = Cells(Lig, I) & ";" & Cells(Lig, Y) & ";" & Cells(Lig, Z): Col = Col + 1
  Next Z: Next Y: Next I
  Lig = Lig + 1
Loop Until Cells(Lig, 1) = ""
End Sub


EDIT: voir ton classeur exemple avec cette macro dans le module !
 

Pièces jointes

  • ConcatenerVBA.xls
    34 KB · Affichages: 30
Dernière édition:

Backhandshot

XLDnaute Occasionnel
Re : (RÉSOLU) Concatenation en VBA

Bonjour tous, Suistrop et Roland_M

J'avais réussi à adapter le code juste avant de venir poster que j'avais trouvé avec le code de Suistrop, maintenant il y aura 2 solutions. Merci beaucoup de votre aide. Voici l'autre code que j'avais adapté.

Sub toto()
Col = 8
For fin = 1 To Range("a1048576").End(xlUp).Rows
For I = 1 To 6
For Y = I + 1 To 6
For Z = Y + 1 To 6
Cells(fin, Col) = Cells(fin, I) & ";" & Cells(fin, Y) & ";" & Cells(fin, Z)
Col = Col + 1

Next Z
Next Y
Next I
Col = 8
Next fin
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 251
Messages
2 086 625
Membres
103 270
dernier inscrit
milvi.org