Concaténer des colonnes dans excel avec une macro
Résolu
ThomasMexcel
Messages postés
28
Date d'inscription
Statut
Membre
Dernière intervention
-
ThomasMexcel Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
ThomasMexcel Messages postés 28 Date d'inscription Statut Membre Dernière intervention -
Bonjour à tous,
J'ai un fichier avec X colonnes, et je souhaiterais concaténer le contenu dans la colonne X+1, par exemple :
colonne 1 colonne 2 colonne 3 colonne 4
fichier test excel fichier test excel
Manuellement, la fonction =colonne 1 &" "& colonne 2 etc... me donne le résultat que je veux. Je souhaiterais automatiser cette action avec un message box me demandant de renseginer le nombre de colonnes à concaténer et d'automatiser cette commande &" "&. Je me suis au prémable positionné dans la cellule qui contiendra le résultat.
Voici ce que j'ai écrit, mais je n'arrive pas à "incrémenter" dans la cellule, puisque mon résultat affiché est le dernier i uniquement. Pourriez-vous m'éclairer ?
Merci
Sub regroupement_colonnes()
Dim X As Byte
If MsgBox("Voulez-vous lancer le regroupement des cellules?", vbYesNo, "Extraction Nomenclature") = vbYes Then
X = InputBox("Saisir le nombre de colonnes à regrouper")
For i = 0 To X
ActiveCell = Cells(ActiveCell.Row, ActiveCell.Column - X + i)
Next i
End If
End Sub
J'ai un fichier avec X colonnes, et je souhaiterais concaténer le contenu dans la colonne X+1, par exemple :
colonne 1 colonne 2 colonne 3 colonne 4
fichier test excel fichier test excel
Manuellement, la fonction =colonne 1 &" "& colonne 2 etc... me donne le résultat que je veux. Je souhaiterais automatiser cette action avec un message box me demandant de renseginer le nombre de colonnes à concaténer et d'automatiser cette commande &" "&. Je me suis au prémable positionné dans la cellule qui contiendra le résultat.
Voici ce que j'ai écrit, mais je n'arrive pas à "incrémenter" dans la cellule, puisque mon résultat affiché est le dernier i uniquement. Pourriez-vous m'éclairer ?
Merci
Sub regroupement_colonnes()
Dim X As Byte
If MsgBox("Voulez-vous lancer le regroupement des cellules?", vbYesNo, "Extraction Nomenclature") = vbYes Then
X = InputBox("Saisir le nombre de colonnes à regrouper")
For i = 0 To X
ActiveCell = Cells(ActiveCell.Row, ActiveCell.Column - X + i)
Next i
End If
End Sub
A voir également:
- Vba concatener cellules
- Concatener deux cellules excel - Guide
- Formule excel pour additionner plusieurs cellules - Guide
- Verrouiller cellules excel - Guide
- Excel compter cellule couleur sans vba - Guide
- L'indice n'appartient pas à la sélection vba - Forum VB / VBA
7 réponses
Bonjour,
Une proposition :
Peut-être a adapter et ajouter des gestions d'erreurs
Cordialement,
Une proposition :
Sub regroupement_colonnes() Dim X As Byte If MsgBox("Voulez-vous lancer le regroupement des cellules?", vbYesNo, "Extraction Nomenclature") = vbYes Then X = InputBox("Saisir le nombre de colonnes à regrouper") ActiveCell = "" For i = X To 0 Step -1 ActiveCell = Cells(ActiveCell.Row, ActiveCell.Column - X + i) & ActiveCell Next i End If End Sub
Peut-être a adapter et ajouter des gestions d'erreurs
Cordialement,
Bonjour
Il faut concatener la valeur de chaque cellule à la valeur de la dernière cellule donc l'instruction de boucle devrait être :
Cdlmnt
Via
Il faut concatener la valeur de chaque cellule à la valeur de la dernière cellule donc l'instruction de boucle devrait être :
For i = 0 To (X - 1) ActiveCell = ActiveCell & Cells(ActiveCell.Row, ActiveCell.Column - X + i) Next i
Cdlmnt
Via
Bonjour à tous,
avec une fonction personnalisée :
Syntaxes :
=concat(A2;" ";3) syntaxe complète : concat(cel1; separateur; nbCol)
=concat(A3;;3) utilisation séparateur par défaut = ", "
=concat(A4;" ") nbCol absent : toutes les colonnes jusqu'à celle de la formule
https://www.cjoint.com/c/GHilpdcE0Zg
eric
avec une fonction personnalisée :
Function concat(cel1 As Range, Optional sep As String = ", ", Optional nbCol As Long) As String Dim c As Range If nbCol = 0 Then nbCol = Abs(Application.ThisCell.Column - cel1.Column) For Each c In cel1.Resize(, nbCol) concat = concat & sep & c.Text Next c concat = Mid(concat, Len(sep) + 1) End Function
Syntaxes :
=concat(A2;" ";3) syntaxe complète : concat(cel1; separateur; nbCol)
=concat(A3;;3) utilisation séparateur par défaut = ", "
=concat(A4;" ") nbCol absent : toutes les colonnes jusqu'à celle de la formule
https://www.cjoint.com/c/GHilpdcE0Zg
eric
Merci à tous pour vos suggestions, la première réponse de pilas31 fonctionne parfaitement. Je ne sais pas si la requête suivante est possible : si j'ai effectué ma macro sur la première ligne, j'aimerais pouvoir étirer ensuite la cellule pour reproduire la macro sur les lignes suivantes, ce qui n'est pas le cas actuellement (cf image jointe)
Est-ilpossible de reconnaître les cellules ? Ou difficilement réalisable en passant via une macro ?
merci
https://img-19.ccm2.net/3n5gXyIjh-xclwaPTsPGkBBmfUM=/a994e46341a5461eb789400d03074a75/ccm-ugc/apercu.PNG
Est-ilpossible de reconnaître les cellules ? Ou difficilement réalisable en passant via une macro ?
merci
https://img-19.ccm2.net/3n5gXyIjh-xclwaPTsPGkBBmfUM=/a994e46341a5461eb789400d03074a75/ccm-ugc/apercu.PNG
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question