Concatenation macro VBA excel nombre de lignes indéfini et séparateur point virgule

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 !

Anna_2013

XLDnaute Junior
Bonsoir,

J'ai essayé de développer une macro permettant de concatener un nombre de lignes indéfinis dans une cellule spécifique C1. Chaque ligne concaténée dans la Feuille 1 étant séparée avec le point virgule.
Cependant quand 'jexécute la macro seul le point virgule apparait en A2. Aucune donnée n'est concaténée en C1.
Pourriez vous svp m'aider à résoudre ce probleme (voir fichier excel joint).
Merci par avance pour votre aide,

Public Sub aaa()
Dim i As Long, LastLig As Long
Dim LastCol As Integer
Dim j As Byte
Dim CONCA As String

With Sheets("Feuil1")
LastLig = .cells(Rows.Count, 1).End(xlUp).Row
LastCol = .cells(1, Columns.Count).End(xlToLeft).Column
For j = 1 To LastCol 'De la colonne 1 à la colonne LastCol
For i = 1 To LastLig 'On boucle sur le contenu de chaque colonne j et on concatène
CONCA = CONCA & .cells(i, j).Value & ";"
Next i
.cells(LastLig + 1, j).Value = CONCA 'On écrit la valeur après la dernière cellule remplie
CONCA = "" 'On initalise CONCA
Next j
End With

End Sub
 
Re : Concatenation macro VBA excel nombre de lignes indéfini et séparateur point virg

Code:
Bonjour à tous
Avec une fonction personnalisée ?:
VB:
Public Function Concat(Source As Range, Separateur As String, Optional SansVide As Boolean) As String
'------------------------------------------------------------------------------
' concatène chaque cellule de la source - avec le séparateur Separateur
' avec les cellules vides si SansVide est omis ou égal à FAUX
' sans les cellules vides si SansVide est égal à VRAI
'------------------------------------------------------------------------------
Dim xcell As Range, i As Long
  If Source.Count = 0 Then Exit Function
  If IsMissing(SansVide) Then SansVide = False
  For Each xcell In Source
      If Not SansVide Or Len(xcell.Value) > 0 Then Concat = Concat & Separateur & xcell.Value
  Next xcell
  If Len(Separateur) > 0 Then Concat = Mid(Concat, Len(Separateur) + 1)
End Function
 

Pièces jointes

Dernière édition:
Re : Concatenation macro VBA excel nombre de lignes indéfini et séparateur point virg

Bonjour,

Je vous remercie tout d'abord pour votre aide.

J'ai modifié le langage de programmation pour la macro concatener.
Cependant elle concatene bien le nombre de cellules mais je souhaiterais que la formule soit appliquée aux lignes i à n pour la colonne A1. Je souhaiterais également que devant le nom SR100 il n'y ait pas de point virgule
Merci pour votre aide,

Anna
 
Dernière édition:
Re : Concatenation macro VBA excel nombre de lignes indéfini et séparateur point virg

Re-bonjour, bonjour, mapomme 🙂,

...elle concatene bien le nombre de cellules mais je souhaiterais que la formule soit appliquée aux lignes i à n pour la colonne A1...

Dans le fichier joint, la macro agit sur la colonne A, au lieu de la B (sollicitée en #1).

...Je souhaiterais également que devant le nom SR100 il n'y ait pas de point virgule...

Dans le fichier déposé en #2, comme dans le fichier ci-joint, ce nom, premier de la liste, n'est précédé d'aucune ponctuation 😕.

Les huit modules vides sont supprimés.

A bientôt 🙂
 

Pièces jointes

- 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

Discussions similaires

Réponses
5
Affichages
241
Réponses
4
Affichages
179
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
650
Réponses
10
Affichages
799
Retour