concatener une colonne

  • Initiateur de la discussion Initiateur de la discussion hiba_123
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

H

hiba_123

Guest
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é!!!!😛
 
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:
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
 
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
 
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

Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Fonction si
Réponses
7
Affichages
224
Réponses
3
Affichages
315
Réponses
2
Affichages
287
Retour