concatener une colonne

hiba_123

XLDnaute Nouveau
bonjour tt l'monde,
voila je voudrais concatener les cellules de la colonne "A" dans une cellule "B" en separant chaque 2enregistrements par "," et en mettant chaque enregistrement entre guillemets " ' ".
ya t'il quelqu'un pour me sauvé!!!!:p
 

chasseur44

XLDnaute Occasionnel
Re : concatener une colonne

Tu peux faire cela ="'"&A1&"'"&" "&"'"&B1&"'"
En cellule A1 tu place TOTO en B1 TITI et le résultat te donne 'TOTO' 'TITI'

--------------------------------

Désolé j'avais pas bien lu ton énoncé !
 
Dernière édition:

Jocelyn

XLDnaute Barbatruc
Re : concatener une colonne

re,
Bonjour chasseur44, hiba_123,

Les solution proposées par les 2 intervenant fonctionnes trés bien si il n'y a pas de trou dans la liste des valeurs et si la quantité de cellules a concaténer n'est pas trop longue.

Autrement une autre solution aller sur le site Excelabo.net et télécharger MOREFUN ensuite tu pourras utiliser une fonction qui est =MCONCAT(plage;séparateur)

Jocelyn
 

Jocelyn

XLDnaute Barbatruc
Re : concatener une colonne

Re,

je te joint un exemple, mais si tu n'as pas téléchargé et installé MOREFUN l'exemple avec cette formule ne fonctionnera pas il restera seulement l'autre exemple

Jocelyn
 

Pièces jointes

  • exp.xls
    13.5 KB · Affichages: 314
  • exp.xls
    13.5 KB · Affichages: 326
  • exp.xls
    13.5 KB · Affichages: 337

Sniker

XLDnaute Nouveau
Re : concatener une colonne

Bonjour,

Sans MOREFUN voici 3 proc. qui donnent ceci :

ListeRef()
'1002221','1002222','1002225','1002226','1002227','1002228','1002229','1005577','1005578', .....

ColRef()
'1002221',
'1002222',
'1002225',
'1002226',
'1002227',
'1002228',
'1002229',

CarrRef()
'1002221','1002222','1002225','1002226',
'1002227','1002228','1002229','1005577',
'1005578','1005579','1005580','1005581',
'1005582','1005583','1005589','1005590',

Je sais que je passe par du copier/coller et que ce n'est pas parfaitement écrit mais c'est fonctionnel.


Sub ListeRef()
'
' Liste Ref en ligne pour PL/SQL
'
Dim Chaine As String
Dim Unit As String
Dim nbli As Variant
Application.CutCopyMode = False
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
nbli = Range("A1").End(xlDown).Address
nbli = Range(nbli).Row
For i = 1 To nbli - 1
Unit = Cells(i, 1)
Chaine = Chaine & "'" & Unit & "',"
Next i
Cells(2, 2).Value = "'" & Chaine
Range("B2").Copy
ActiveWorkbook.Close (False)
End Sub


Sub ColRef()
'
' Ref en Colonne pour PL/SQL
'
Dim nbli As Variant
Application.CutCopyMode = False
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
nbli = Range("A1").End(xlDown).Address
nbli = Range(nbli).Row
For i = 1 To nbli
j = j + 1
Cells(j, 2).Value = "''" & Cells(i, 1) & "',"
Next i
Range("B1:B" + CStr(nbli)).Copy
ActiveWorkbook.Close (False)
End Sub


Sub CarrRef()
'
' En colonne par 4 Ref pour PL/SQL
'
Dim nbli As Variant
Application.CutCopyMode = False
Selection.Copy
Workbooks.Add
ActiveSheet.Paste
nbli = Range("A1").End(xlDown).Address
nbli = Range(nbli).Row
For i = 1 To nbli Step 4
j = j + 1
Cells(j, 2).Value = "''" & Cells(i, 1) & "','" & Cells(i + 1, 1) & "','" & Cells(i + 2, 1) & "','" & Cells(i + 3, 1) & "',"
Next i
Range("B1:B" + CStr(j)).Copy
ActiveWorkbook.Close (False)
End Sub
 

laurent950

XLDnaute Accro
Re : concatener une colonne

Bonsoir hiba_123, le forum, le fil.

voici un code :

VB:
Sub test()
' Cette macro fait tous a la suite (module 1 a tester sur feuil1)
Dim tab1() As Variant

fin = Range("a65536").End(xlUp).Row
tab1 = Range(Cells(1, 1), Cells(fin, 1))

ReDim Preserve tab1(1 To fin, 1 To 2)
For i = LBound(tab1, 1) To UBound(tab1, 1)
    tab1(1, 2) = tab1(1, 2) & tab1(i, 1) & "','"
    ' Debug.Print tab1(1, 2)
Next i

' Debug.Print Left(tab1(1, 2), Len(tab1(1, 2)) - 2)
tab1(1, 2) = "'" & Left(tab1(1, 2), Len(tab1(1, 2)) - 2)

Cells(1, 2).Resize(UBound(tab1, 1)) = Application.Index(tab1, , 2)
 
End Sub

'******************************************************************************

Sub TestSiVides()
' Cette macro fait tous si ce n'est pas a la suite ou si c'est à la suite (module 2 a tester sur feuil2)
' double utilisation pour cette macro

Dim tab1() As Variant

fin = Range("a65536").End(xlUp).Row
tab1 = Range(Cells(1, 1), Cells(fin, 1))

ReDim Preserve tab1(1 To fin, 1 To 2)
For i = LBound(tab1, 1) To UBound(tab1, 1)
    If tab1(i, 1) <> Empty Then
    tab1(1, 2) = tab1(1, 2) & tab1(i, 1) & "','"
    ' Debug.Print tab1(1, 2)
    End If
Next i

' Debug.Print Left(tab1(1, 2), Len(tab1(1, 2)) - 2)
tab1(1, 2) = "'" & Left(tab1(1, 2), Len(tab1(1, 2)) - 2)

Cells(1, 2).Resize(UBound(tab1, 1)) = Application.Index(tab1, , 2)
 
End Sub

Ps : En feuil 1 (module1 = macro VBA) a la suite
En feuil 2 (module2 = macro VBA) si ce n'est pas a la suite

Laurent
 

Pièces jointes

  • Variable tableau concatenation.xls
    32.5 KB · Affichages: 243
Dernière édition:

Statistiques des forums

Discussions
312 305
Messages
2 087 077
Membres
103 455
dernier inscrit
saramachado