concaténer deux colonnes l'une à la suite de l'autre

gegea

XLDnaute Nouveau
Bonsoir,

Je souhaite concaténer deux colonnes parallèle l'une à la suite de l'autre sur une troisième colonne.
J'avais pensé à coller le contenu de chaque cellule de la première tant qu'elle n'était pas vide puis continuer en collant les cellules de la seconde colonne mais il semble que ce ne soit pas si simple.

J'espère que quelqu'un pourra m'aider,

Cordialement.
 

Tibo

XLDnaute Barbatruc
Re : concaténer deux colonnes l'une à la suite de l'autre

Bonjour gegea et bienvenue sur XLD,

Au plus simple :

En supposant tes deux colonnes : A et B

en C1 :

=A1&B1

à recopier vers le bas

Si pas ça, joins nous un extrait de ton fichier (anonymisé) pour que nous comprenions plus précisément ton souhait.

@+

Edit : bing ! Salut tototiti :)

@+
 

Efgé

XLDnaute Barbatruc
Re : concaténer deux colonnes l'une à la suite de l'autre

Bonjour gegea, Tototiti, Tibo,
Pas compris la même chose:
Code:
[COLOR=blue]Sub[/COLOR] ajout()
[COLOR=blue]Dim[/COLOR] Tablo()
j = 0
[COLOR=blue]ReDim[/COLOR] Tablo(j)
[COLOR=blue]With[/COLOR] Sheets("Feuil1")
    [COLOR=blue]For[/COLOR] k = 1 [COLOR=blue]To[/COLOR] 2
        [COLOR=blue]For[/COLOR] i = 1 [COLOR=blue]To[/COLOR] .Cells(65536, k).End(xlUp).Row
            Tablo(j) = .Cells(i, k)
            j = j + 1
            [COLOR=blue]ReDim Preserve[/COLOR] Tablo(j)
        [COLOR=blue]Next[/COLOR] i
    [COLOR=blue]Next[/COLOR] k
.Range("C1").Resize([COLOR=blue]UBound[/COLOR](Tablo, 1), 1) = Application.Transpose(Tablo)
[COLOR=blue]End With[/COLOR]
[COLOR=blue]End Sub[/COLOR]
Cordialement
 
Dernière édition:

gegea

XLDnaute Nouveau
Re : concaténer deux colonnes l'une à la suite de l'autre

Re-bonjour,

Efgé pourrait tu me donner quelques explications sur le code, notament sur le redimensionnement des tableaux à la fin de la boucle, car je viens de me rendre compte que ça me serait très util pour la suite de mon travail.

Cordialement,
 

Efgé

XLDnaute Barbatruc
Re : concaténer deux colonnes l'une à la suite de l'autre

Bonjour gegea, le fil, le forum,
La macro commentée :
Code:
[COLOR=blue]Sub[/COLOR] ajout()
[COLOR=green]'Déclaration du tableau vide[/COLOR]
[COLOR=blue]Dim[/COLOR] Tablo()
[COLOR=green]'Initialisation de la variable qui servira à dimentionner le tableau[/COLOR]
j = 0
[COLOR=green]'Redimentionnement du tableau à 0[/COLOR]
[COLOR=blue]ReDim[/COLOR] Tablo(j)
[COLOR=green]'Avec la feuille 1[/COLOR]
[COLOR=blue]With[/COLOR] Sheets("Feuil1")
[COLOR=green]'Variable k qui sert à definir les colonnes (A et B, donc 1 et 2)[/COLOR]
    [COLOR=blue]For[/COLOR] k = 1 [COLOR=blue]To[/COLOR] 2
[COLOR=green]'Variable i qui sert à boucler sur les lignes des colobbes 1 et 2[/COLOR]
        [COLOR=blue]For[/COLOR] i = 1 [COLOR=blue]To[/COLOR] .Cells(65536, k).End(xlUp).Row
[COLOR=green]'On met la valeur de la cellule ligne i colonne k dans le tableau à l'emplacement j[/COLOR]
            Tablo(j) = .Cells(i, k)
[COLOR=green]'On incrémente l'emplacement dans le tableau[/COLOR]
            j = j + 1
[COLOR=green]'On redimentionne le tableau en conservant les données déja inscrites[/COLOR]
            [COLOR=blue]ReDim Preserve[/COLOR] Tablo(j)
[COLOR=green]'ligne suivante[/COLOR]
        [COLOR=blue]Next[/COLOR] i
[COLOR=green]'Colonne suivante[/COLOR]
    [COLOR=blue]Next[/COLOR] k
[COLOR=green]'On colle le tableau en C1[/COLOR]
[COLOR=green]'(Comme le tableau est à une seule dimention, il faut utiliser Application.Transpose)[/COLOR]
.Range("C1").Resize([COLOR=blue]UBound[/COLOR](Tablo, 1), 1) = Application.Transpose(Tablo)
[COLOR=blue]End With[/COLOR]
[COLOR=blue]End Sub[/COLOR]
Cordialement
 

Miky61

XLDnaute Nouveau
Re : concaténer deux colonnes l'une à la suite de l'autre

bonjour,
Ne pourrait on pas faire cela sans macro ??
- Récupérer le nombre d'objet de chaque colonne
- et les mettre à la suite d'en une énième colonne...
Ça pourrait m'alléger mon fichier
 

tototiti2008

XLDnaute Barbatruc
Re : concaténer deux colonnes l'une à la suite de l'autre

Bonjour à tous,

En effet, ce n'est pas ce que j'avais compris...
sans macro, par formule, si les données en colonnes A et B à partir de la ligne 1

en C1 :

Code:
=SI(A1="";DECALER(B1;-NBVAL(A:A);0);A1)

à recopier vers le bas
 

tototiti2008

XLDnaute Barbatruc
Re : concaténer deux colonnes l'une à la suite de l'autre

Re,

sur le même principe :

Code:
=SI(A1="";SI(DECALER(B1;-NBVAL(A:A);0)="";SI(DECALER(C1;-NBVAL(A:A)-NBVAL(B:B);0)="";DECALER(D1;-NBVAL(A:A)-NBVAL(B:B)-NBVAL(C:C);0);DECALER(C1;-NBVAL(A:A)-NBVAL(B:B);0));DECALER(B1;-NBVAL(A:A);0));A1)
 

Kingwithou

XLDnaute Nouveau
Re : concaténer deux colonnes l'une à la suite de l'autre

Re,

sur le même principe :

Code:
=SI(A1="";SI(DECALER(B1;-NBVAL(A:A);0)="";SI(DECALER(C1;-NBVAL(A:A)-NBVAL(B:B);0)="";DECALER(D1;-NBVAL(A:A)-NBVAL(B:B)-NBVAL(C:C);0);DECALER(C1;-NBVAL(A:A)-NBVAL(B:B);0));DECALER(B1;-NBVAL(A:A);0));A1)

Si quelqu'un tombe sur ce sujet comme moi après tant d'années... Formule la plus simple que j'ai trouvée et qui consiste à faire une chaine de texte avec les colonnes qu'on sépare ensuite en liste horizontale qu'on retranspose en vertical :
=TRANSPOSE(FRACTIONNER.TEXTE(JOINDRE.TEXTE( "-" , 1 , A:A , B:B ) , "-" ))

Et qui a l'avantage de fonctionner avec des données dispersées un peu n'importe comment :)
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
314 636
Messages
2 111 460
Membres
111 151
dernier inscrit
KARIMTAPSO