Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Concaténer 2 colonnes suivant leurs noms définis

Profane

XLDnaute Occasionnel
Bonjour le Forum

voila mon soucis,
j'importe un fichier dont les colonnes ne sont pas tous le temps dans le même ordre
solution, je lis les colonnes et je nomme celles qui m'intéresse dynamiquement via VBA

par contre, je souhaite concaténer en vba 2 de ces colonnes
et LA je suis obligé de le faire via leurs noms de colonnes (car comme dit précédemment leur place varient dans le fichier)

comment faire ?
copier les deux colonnes en première et seconde position du fichier, et faire "concaténer A&B" ?

merci d'avance pour votre aide
et bonne fêtes de fin d 'année a tous ;-)
 

Profane

XLDnaute Occasionnel
Re : Concaténer 2 colonnes suivant leurs noms définis

Bonjour Gosselien

le petit bout de code que j'aimerai "optimiser" :
merci pour ton aide

Sheets("DT").Activate
With Sheets("DT")
.Range("AT1") = "ConcatenerDT"
.Cells(2, "AT").FormulaLocal = "=F2&O2" <--------- mais ces colonnes peuvent varier d'où le besoin de passer via range(nom de colonne)
Range("AT2").AutoFill Destination:=Range(Cells(2, "AT"), Cells(Cells(Rows.Count, "A").End(xlUp).Row, "AT"))
.Range("AT:AT").NumberFormat = "General"
.Range("AT:AT").HorizontalAlignment = xlCenter
end with
end Sub
 

Docmarti

XLDnaute Occasionnel
Re : Concaténer 2 colonnes suivant leurs noms définis

Bonjour Profane

Voici comment trouver l'adresse en connaissant le numéro des colonnes :

Code:
col1 = 5 'Premiere colonne
col2 = 7 'Seconde colonne

r1 = Cells(2, col1).Address(ColumnAbsolute:=False, rowAbsolute:=False)
r2 = Cells(2, col2).Address(ColumnAbsolute:=False, rowAbsolute:=False)
'....
.Cells(2, "AT").FormulaLocal = "=" & r1 & "&" & r2

Si tu as besoin seulement de la lettre de la colonne:

Code:
lettre1 = Split(Cells(2, col1).Address(columnAbsolute:=False), "$")(0)

Cordialement
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Concaténer 2 colonnes suivant leurs noms définis

Bonsoir à tous

Une autre façon de faire (sans utiliser l'Autofill)
Code:
Sub test()
Dim dl&, colA$, colB$
Sheets("DT").Activate
With Sheets("DT")
    dl = .Cells(Rows.Count, "A").End(xlUp).Row
    colA = "F": colB = "O"
    .Range("AT1") = "ConcatenerDT"
    .Cells(2, "AT").Resize(dl).FormulaLocal = "=" & colA & "2&" & colB & "2"
    With .Range("AT:AT")
        .NumberFormat = "General"
        .HorizontalAlignment = xlCenter
    End With
End With
End Sub
 

Discussions similaires

Réponses
2
Affichages
220
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…