VBA - Excel: Concaténer automatiquement avec boucle
Résolu
Bonjour,
Je travaille sur Excel 2013, je débute en VBA et j'ai une problématique qui me bloque.
Ma feuille contient des mots dans les cellules: ex: en B1:"Bonjour", en C1:"à", en D1:"tous", puis en B2:"Salut" et en C2:"toi"...
En colonne A, j'aimerais pouvoir constituer automatiquement des phrases par ligne en concaténant les mots des différentes cellules séparés d'un espace, pour obtenir "Bonjour à tous" pour la ligne 1, puis "Salut toi" pour la ligne 2...
Le problème c'est que je ne sais jamais combien de mots j'ai dans chaque ligne, ni combien de lignes j'ai au total.
Auriez-vous une solution ou une piste à me proposer?
Je vous remercie par avance de votre aide!
Je travaille sur Excel 2013, je débute en VBA et j'ai une problématique qui me bloque.
Ma feuille contient des mots dans les cellules: ex: en B1:"Bonjour", en C1:"à", en D1:"tous", puis en B2:"Salut" et en C2:"toi"...
En colonne A, j'aimerais pouvoir constituer automatiquement des phrases par ligne en concaténant les mots des différentes cellules séparés d'un espace, pour obtenir "Bonjour à tous" pour la ligne 1, puis "Salut toi" pour la ligne 2...
Le problème c'est que je ne sais jamais combien de mots j'ai dans chaque ligne, ni combien de lignes j'ai au total.
Auriez-vous une solution ou une piste à me proposer?
Je vous remercie par avance de votre aide!
1 réponse
-
Contributeurbonjour,
suggestion:Sub lena() Dim cola As Range, mot As Range Set cola = [a1] Do While cola.Offset(, 1) <> "" Set mot = cola.Offset(, 1) Do While mot <> "" cola = cola + mot + " " Set mot = mot.Offset(, 1) Loop Set cola = cola.Offset(1) Loop End Sub-
-
Contributeur@Lena-tkdpetite suggestion subsidiaire:
Sub lena() Dim cola As Range, mot As String, ncol As Long, lastcol As Long, nlig As Long, fl As Worksheet Set fl = ActiveSheet Set cola = fl.[a1] lastcol = fl.UsedRange.Column + fl.UsedRange.Columns.Count - 1 Do While cola.Offset(, 1) <> "" cola = "" nlig = cola.Row For ncol = 2 To lastcol mot = fl.Cells(nlig, ncol) If mot <> "" Then cola = cola + mot + " " End If Next ncol Set cola = cola.Offset(1) Loop End Sub -
@yg_beC'est encore mieux, merci énormément!!!
-
Contributeur@Lena-tkdavec plaisir!
pourras-tu marquer la discussion comme résolue? -
@yg_beC'est ce que je cherche à faire depuis mon dernier commentaire, mais je ne trouve pas la fonction, je voudrais même ajouter un "Merci" :/
-