VBA: Concaténer 2 colonnes en 1 seule

MJ13

XLDnaute Barbatruc
Bonjour à tous

Comme les tableaux, c'est pas trop mon truc, j'aimerais avoir un code VBA rapide pour concaténer 2 colonnes en 1 avec un séparateur "\.

C'est pour avoir la concaténation de noms de fichier et de dossier. En colonne 1, j'ai le nom des dossiers, en colonne 2 le nom des fichiers et il faudrait que j'ai en colonne H: Dossier & "\" & fichier.

Merci d'avance :).
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : VBA: Concaténer 2 colonnes en 1 seule

Bonjour Michel,

avec ce code:
Code:
For i = 1 To Range("A65535").End(xlUp).Row
Cells(i, 8) = Cells(i, 1) & "\" & Cells(i, 2)
Next i

à+
Philippe
 

Pièces jointes

  • 111.xls
    42 KB · Affichages: 38
  • 111.xls
    42 KB · Affichages: 51
  • 111.xls
    42 KB · Affichages: 48
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : VBA: Concaténer 2 colonnes en 1 seule

Bonjour MJ :) Bonjour Philippe :)
Trop tard, mais je l'ai fait, je le poste

Avec tableaux :
VB:
Sub Test()
Dim T1, T2, i&
With Sheets("Feuil1")
    T1 = .Range(.Cells(1, 1), .Cells(.Rows.Count, 2).End(3))
    ReDim T2(1 To UBound(T1, 1), 1 To 1)
    For i = 1 To UBound(T2)
        T2(i, 1) = T1(i, 1) & "\" & T1(i, 2)
    Next i
    .Cells(1, 8).Resize(UBound(T2, 1), 1) = T2
End With
End Sub
cordialement
 

MJ13

XLDnaute Barbatruc
Re : VBA: Concaténer 2 colonnes en 1 seule

Bonjour Philippe, Efgé

Merci beaucoup pour vos réponses :).

Je prend les 2 codes. Bien sur le second est un peu plus rapide de 10 fois environ de 27 secondes à
2,8 secondes sur 500 000 lignes :eek:. Par contre en routine, je prendrais plutôt le premier code si je n'ai pas trop de lignes, vu que je le comprend mieux :eek:.

Sinon, j'avais besoin après la concaténation de copier ces données ves un fichier txt sur mon bureau:

Voici le code (2 secondes pour 500 000 lignes):
Code:
Sub A_Copy_Zone_TXT()
Dim chemin As String
T1 = Timer
Close
CheminFichierTxt = CreateObject("WScript.Shell").specialFolders("Desktop") & "\" & "EnCours.txt"
Open CheminFichierTxt For Output As #2
For Each cell In Selection
Print #2, cell
Next
Close
MsgBox Timer - T1
End Sub
 
Dernière édition:

Efgé

XLDnaute Barbatruc
Re : VBA: Concaténer 2 colonnes en 1 seule

Re
Si j'ai bien compris, tu crée les noms sur la feuille puis tu crée un fichier texte avec ta colonne.
Si tu n'as besoin que du fichier texte, une proposition (0.29 seconde pour 50 000 lignes)
VB:
Sub A_Transfert_Tableau_TXT()
Dim chemin As String, Tm!, T As Variant
Tm = Timer
CheminFichierTxt = CreateObject("WScript.Shell").specialFolders("Desktop") & "\" & "EnCours.txt"


With Sheets("Feuil1")
    T = .Range(.Cells(1, 1), .Cells(.Rows.Count, 2).End(3))
End With

Open CheminFichierTxt For Output As #2
    For i = 1 To UBound(T, 1)
        Print #2, T(i, 1) & "\" & T(i, 2)
    Next i
Close #2
MsgBox Timer - Tm
End Sub
Cordialement
 

Discussions similaires

Statistiques des forums

Discussions
312 679
Messages
2 090 849
Membres
104 677
dernier inscrit
soufiane12